rj_schema 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (299) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +18 -0
  3. data/ext/rj_schema/extconf.rb +7 -0
  4. data/ext/rj_schema/rapidjson/CHANGELOG.md +158 -0
  5. data/ext/rj_schema/rapidjson/CMakeLists.txt +221 -0
  6. data/ext/rj_schema/rapidjson/CMakeModules/FindGTestSrc.cmake +30 -0
  7. data/ext/rj_schema/rapidjson/RapidJSON.pc.in +7 -0
  8. data/ext/rj_schema/rapidjson/RapidJSONConfig.cmake.in +15 -0
  9. data/ext/rj_schema/rapidjson/RapidJSONConfigVersion.cmake.in +10 -0
  10. data/ext/rj_schema/rapidjson/appveyor.yml +41 -0
  11. data/ext/rj_schema/rapidjson/bin/data/glossary.json +22 -0
  12. data/ext/rj_schema/rapidjson/bin/data/menu.json +27 -0
  13. data/ext/rj_schema/rapidjson/bin/data/readme.txt +1 -0
  14. data/ext/rj_schema/rapidjson/bin/data/sample.json +3315 -0
  15. data/ext/rj_schema/rapidjson/bin/data/webapp.json +88 -0
  16. data/ext/rj_schema/rapidjson/bin/data/widget.json +26 -0
  17. data/ext/rj_schema/rapidjson/bin/draft-04/schema +150 -0
  18. data/ext/rj_schema/rapidjson/bin/encodings/utf16be.json +0 -0
  19. data/ext/rj_schema/rapidjson/bin/encodings/utf16bebom.json +0 -0
  20. data/ext/rj_schema/rapidjson/bin/encodings/utf16le.json +0 -0
  21. data/ext/rj_schema/rapidjson/bin/encodings/utf16lebom.json +0 -0
  22. data/ext/rj_schema/rapidjson/bin/encodings/utf32be.json +0 -0
  23. data/ext/rj_schema/rapidjson/bin/encodings/utf32bebom.json +0 -0
  24. data/ext/rj_schema/rapidjson/bin/encodings/utf32le.json +0 -0
  25. data/ext/rj_schema/rapidjson/bin/encodings/utf32lebom.json +0 -0
  26. data/ext/rj_schema/rapidjson/bin/encodings/utf8.json +7 -0
  27. data/ext/rj_schema/rapidjson/bin/encodings/utf8bom.json +7 -0
  28. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail1.json +1 -0
  29. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail10.json +1 -0
  30. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail11.json +1 -0
  31. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail12.json +1 -0
  32. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail13.json +1 -0
  33. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail14.json +1 -0
  34. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail15.json +1 -0
  35. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail16.json +1 -0
  36. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail17.json +1 -0
  37. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail18.json +1 -0
  38. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail19.json +1 -0
  39. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail2.json +1 -0
  40. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail20.json +1 -0
  41. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail21.json +1 -0
  42. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail22.json +1 -0
  43. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail23.json +1 -0
  44. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail24.json +1 -0
  45. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail25.json +1 -0
  46. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail26.json +1 -0
  47. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail27.json +2 -0
  48. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail28.json +2 -0
  49. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail29.json +1 -0
  50. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail3.json +1 -0
  51. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail30.json +1 -0
  52. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail31.json +1 -0
  53. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail32.json +1 -0
  54. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail33.json +1 -0
  55. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail4.json +1 -0
  56. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail5.json +1 -0
  57. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail6.json +1 -0
  58. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail7.json +1 -0
  59. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail8.json +1 -0
  60. data/ext/rj_schema/rapidjson/bin/jsonchecker/fail9.json +1 -0
  61. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass1.json +58 -0
  62. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass2.json +1 -0
  63. data/ext/rj_schema/rapidjson/bin/jsonchecker/pass3.json +6 -0
  64. data/ext/rj_schema/rapidjson/bin/jsonchecker/readme.txt +3 -0
  65. data/ext/rj_schema/rapidjson/bin/jsonschema/LICENSE +19 -0
  66. data/ext/rj_schema/rapidjson/bin/jsonschema/README.md +148 -0
  67. data/ext/rj_schema/rapidjson/bin/jsonschema/bin/jsonschema_suite +283 -0
  68. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/folder/folderInteger.json +3 -0
  69. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/integer.json +3 -0
  70. data/ext/rj_schema/rapidjson/bin/jsonschema/remotes/subSchemas.json +8 -0
  71. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/additionalItems.json +82 -0
  72. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/additionalProperties.json +88 -0
  73. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/default.json +49 -0
  74. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/dependencies.json +108 -0
  75. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/disallow.json +80 -0
  76. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/divisibleBy.json +60 -0
  77. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/enum.json +71 -0
  78. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/extends.json +94 -0
  79. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/items.json +46 -0
  80. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maxItems.json +28 -0
  81. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maxLength.json +33 -0
  82. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/maximum.json +42 -0
  83. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minItems.json +28 -0
  84. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minLength.json +33 -0
  85. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/minimum.json +42 -0
  86. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/bignum.json +107 -0
  87. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/format.json +222 -0
  88. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/jsregex.json +18 -0
  89. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/optional/zeroTerminatedFloats.json +15 -0
  90. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/pattern.json +34 -0
  91. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/patternProperties.json +110 -0
  92. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/properties.json +92 -0
  93. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/ref.json +159 -0
  94. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/refRemote.json +74 -0
  95. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/required.json +53 -0
  96. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/type.json +474 -0
  97. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft3/uniqueItems.json +79 -0
  98. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/additionalItems.json +82 -0
  99. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/additionalProperties.json +88 -0
  100. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/allOf.json +112 -0
  101. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/anyOf.json +68 -0
  102. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/default.json +49 -0
  103. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/definitions.json +32 -0
  104. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/dependencies.json +113 -0
  105. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/enum.json +72 -0
  106. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/items.json +46 -0
  107. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxItems.json +28 -0
  108. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxLength.json +33 -0
  109. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maxProperties.json +28 -0
  110. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/maximum.json +42 -0
  111. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minItems.json +28 -0
  112. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minLength.json +33 -0
  113. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minProperties.json +28 -0
  114. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/minimum.json +42 -0
  115. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/multipleOf.json +60 -0
  116. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/not.json +96 -0
  117. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/oneOf.json +68 -0
  118. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/bignum.json +107 -0
  119. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/format.json +148 -0
  120. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/optional/zeroTerminatedFloats.json +15 -0
  121. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/pattern.json +34 -0
  122. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/patternProperties.json +110 -0
  123. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/properties.json +92 -0
  124. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/ref.json +159 -0
  125. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/refRemote.json +74 -0
  126. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/required.json +39 -0
  127. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/type.json +330 -0
  128. data/ext/rj_schema/rapidjson/bin/jsonschema/tests/draft4/uniqueItems.json +79 -0
  129. data/ext/rj_schema/rapidjson/bin/jsonschema/tox.ini +8 -0
  130. data/ext/rj_schema/rapidjson/bin/types/booleans.json +102 -0
  131. data/ext/rj_schema/rapidjson/bin/types/floats.json +102 -0
  132. data/ext/rj_schema/rapidjson/bin/types/guids.json +102 -0
  133. data/ext/rj_schema/rapidjson/bin/types/integers.json +102 -0
  134. data/ext/rj_schema/rapidjson/bin/types/mixed.json +592 -0
  135. data/ext/rj_schema/rapidjson/bin/types/nulls.json +102 -0
  136. data/ext/rj_schema/rapidjson/bin/types/paragraphs.json +102 -0
  137. data/ext/rj_schema/rapidjson/bin/types/readme.txt +1 -0
  138. data/ext/rj_schema/rapidjson/contrib/natvis/LICENSE +45 -0
  139. data/ext/rj_schema/rapidjson/contrib/natvis/README.md +7 -0
  140. data/ext/rj_schema/rapidjson/contrib/natvis/rapidjson.natvis +38 -0
  141. data/ext/rj_schema/rapidjson/doc/CMakeLists.txt +27 -0
  142. data/ext/rj_schema/rapidjson/doc/Doxyfile.in +2369 -0
  143. data/ext/rj_schema/rapidjson/doc/Doxyfile.zh-cn.in +2369 -0
  144. data/ext/rj_schema/rapidjson/doc/diagram/architecture.dot +50 -0
  145. data/ext/rj_schema/rapidjson/doc/diagram/architecture.png +0 -0
  146. data/ext/rj_schema/rapidjson/doc/diagram/insituparsing.dot +65 -0
  147. data/ext/rj_schema/rapidjson/doc/diagram/insituparsing.png +0 -0
  148. data/ext/rj_schema/rapidjson/doc/diagram/iterative-parser-states-diagram.dot +62 -0
  149. data/ext/rj_schema/rapidjson/doc/diagram/iterative-parser-states-diagram.png +0 -0
  150. data/ext/rj_schema/rapidjson/doc/diagram/makefile +8 -0
  151. data/ext/rj_schema/rapidjson/doc/diagram/move1.dot +47 -0
  152. data/ext/rj_schema/rapidjson/doc/diagram/move1.png +0 -0
  153. data/ext/rj_schema/rapidjson/doc/diagram/move2.dot +62 -0
  154. data/ext/rj_schema/rapidjson/doc/diagram/move2.png +0 -0
  155. data/ext/rj_schema/rapidjson/doc/diagram/move3.dot +60 -0
  156. data/ext/rj_schema/rapidjson/doc/diagram/move3.png +0 -0
  157. data/ext/rj_schema/rapidjson/doc/diagram/normalparsing.dot +56 -0
  158. data/ext/rj_schema/rapidjson/doc/diagram/normalparsing.png +0 -0
  159. data/ext/rj_schema/rapidjson/doc/diagram/simpledom.dot +54 -0
  160. data/ext/rj_schema/rapidjson/doc/diagram/simpledom.png +0 -0
  161. data/ext/rj_schema/rapidjson/doc/diagram/tutorial.dot +58 -0
  162. data/ext/rj_schema/rapidjson/doc/diagram/tutorial.png +0 -0
  163. data/ext/rj_schema/rapidjson/doc/diagram/utilityclass.dot +73 -0
  164. data/ext/rj_schema/rapidjson/doc/diagram/utilityclass.png +0 -0
  165. data/ext/rj_schema/rapidjson/doc/dom.md +280 -0
  166. data/ext/rj_schema/rapidjson/doc/dom.zh-cn.md +284 -0
  167. data/ext/rj_schema/rapidjson/doc/encoding.md +146 -0
  168. data/ext/rj_schema/rapidjson/doc/encoding.zh-cn.md +152 -0
  169. data/ext/rj_schema/rapidjson/doc/faq.md +289 -0
  170. data/ext/rj_schema/rapidjson/doc/faq.zh-cn.md +290 -0
  171. data/ext/rj_schema/rapidjson/doc/features.md +104 -0
  172. data/ext/rj_schema/rapidjson/doc/features.zh-cn.md +103 -0
  173. data/ext/rj_schema/rapidjson/doc/internals.md +368 -0
  174. data/ext/rj_schema/rapidjson/doc/internals.zh-cn.md +363 -0
  175. data/ext/rj_schema/rapidjson/doc/logo/rapidjson.png +0 -0
  176. data/ext/rj_schema/rapidjson/doc/logo/rapidjson.svg +119 -0
  177. data/ext/rj_schema/rapidjson/doc/misc/DoxygenLayout.xml +194 -0
  178. data/ext/rj_schema/rapidjson/doc/misc/doxygenextra.css +274 -0
  179. data/ext/rj_schema/rapidjson/doc/misc/footer.html +11 -0
  180. data/ext/rj_schema/rapidjson/doc/misc/header.html +24 -0
  181. data/ext/rj_schema/rapidjson/doc/npm.md +31 -0
  182. data/ext/rj_schema/rapidjson/doc/performance.md +26 -0
  183. data/ext/rj_schema/rapidjson/doc/performance.zh-cn.md +26 -0
  184. data/ext/rj_schema/rapidjson/doc/pointer.md +234 -0
  185. data/ext/rj_schema/rapidjson/doc/pointer.zh-cn.md +234 -0
  186. data/ext/rj_schema/rapidjson/doc/sax.md +509 -0
  187. data/ext/rj_schema/rapidjson/doc/sax.zh-cn.md +487 -0
  188. data/ext/rj_schema/rapidjson/doc/schema.md +505 -0
  189. data/ext/rj_schema/rapidjson/doc/schema.zh-cn.md +237 -0
  190. data/ext/rj_schema/rapidjson/doc/stream.md +426 -0
  191. data/ext/rj_schema/rapidjson/doc/stream.zh-cn.md +426 -0
  192. data/ext/rj_schema/rapidjson/doc/tutorial.md +536 -0
  193. data/ext/rj_schema/rapidjson/doc/tutorial.zh-cn.md +534 -0
  194. data/ext/rj_schema/rapidjson/docker/debian/Dockerfile +8 -0
  195. data/ext/rj_schema/rapidjson/example/CMakeLists.txt +45 -0
  196. data/ext/rj_schema/rapidjson/example/archiver/archiver.cpp +292 -0
  197. data/ext/rj_schema/rapidjson/example/archiver/archiver.h +145 -0
  198. data/ext/rj_schema/rapidjson/example/archiver/archivertest.cpp +287 -0
  199. data/ext/rj_schema/rapidjson/example/capitalize/capitalize.cpp +67 -0
  200. data/ext/rj_schema/rapidjson/example/condense/condense.cpp +32 -0
  201. data/ext/rj_schema/rapidjson/example/filterkey/filterkey.cpp +135 -0
  202. data/ext/rj_schema/rapidjson/example/filterkeydom/filterkeydom.cpp +170 -0
  203. data/ext/rj_schema/rapidjson/example/jsonx/jsonx.cpp +207 -0
  204. data/ext/rj_schema/rapidjson/example/lookaheadparser/lookaheadparser.cpp +350 -0
  205. data/ext/rj_schema/rapidjson/example/messagereader/messagereader.cpp +105 -0
  206. data/ext/rj_schema/rapidjson/example/parsebyparts/parsebyparts.cpp +176 -0
  207. data/ext/rj_schema/rapidjson/example/pretty/pretty.cpp +30 -0
  208. data/ext/rj_schema/rapidjson/example/prettyauto/prettyauto.cpp +56 -0
  209. data/ext/rj_schema/rapidjson/example/schemavalidator/schemavalidator.cpp +78 -0
  210. data/ext/rj_schema/rapidjson/example/serialize/serialize.cpp +173 -0
  211. data/ext/rj_schema/rapidjson/example/simpledom/simpledom.cpp +29 -0
  212. data/ext/rj_schema/rapidjson/example/simplepullreader/simplepullreader.cpp +53 -0
  213. data/ext/rj_schema/rapidjson/example/simplereader/simplereader.cpp +42 -0
  214. data/ext/rj_schema/rapidjson/example/simplewriter/simplewriter.cpp +36 -0
  215. data/ext/rj_schema/rapidjson/example/tutorial/tutorial.cpp +151 -0
  216. data/ext/rj_schema/rapidjson/include/rapidjson/allocators.h +271 -0
  217. data/ext/rj_schema/rapidjson/include/rapidjson/cursorstreamwrapper.h +78 -0
  218. data/ext/rj_schema/rapidjson/include/rapidjson/document.h +2630 -0
  219. data/ext/rj_schema/rapidjson/include/rapidjson/encodedstream.h +299 -0
  220. data/ext/rj_schema/rapidjson/include/rapidjson/encodings.h +716 -0
  221. data/ext/rj_schema/rapidjson/include/rapidjson/error/en.h +74 -0
  222. data/ext/rj_schema/rapidjson/include/rapidjson/error/error.h +161 -0
  223. data/ext/rj_schema/rapidjson/include/rapidjson/filereadstream.h +99 -0
  224. data/ext/rj_schema/rapidjson/include/rapidjson/filewritestream.h +104 -0
  225. data/ext/rj_schema/rapidjson/include/rapidjson/fwd.h +151 -0
  226. data/ext/rj_schema/rapidjson/include/rapidjson/internal/biginteger.h +290 -0
  227. data/ext/rj_schema/rapidjson/include/rapidjson/internal/diyfp.h +258 -0
  228. data/ext/rj_schema/rapidjson/include/rapidjson/internal/dtoa.h +245 -0
  229. data/ext/rj_schema/rapidjson/include/rapidjson/internal/ieee754.h +78 -0
  230. data/ext/rj_schema/rapidjson/include/rapidjson/internal/itoa.h +304 -0
  231. data/ext/rj_schema/rapidjson/include/rapidjson/internal/meta.h +181 -0
  232. data/ext/rj_schema/rapidjson/include/rapidjson/internal/pow10.h +55 -0
  233. data/ext/rj_schema/rapidjson/include/rapidjson/internal/regex.h +734 -0
  234. data/ext/rj_schema/rapidjson/include/rapidjson/internal/stack.h +231 -0
  235. data/ext/rj_schema/rapidjson/include/rapidjson/internal/strfunc.h +69 -0
  236. data/ext/rj_schema/rapidjson/include/rapidjson/internal/strtod.h +269 -0
  237. data/ext/rj_schema/rapidjson/include/rapidjson/internal/swap.h +46 -0
  238. data/ext/rj_schema/rapidjson/include/rapidjson/istreamwrapper.h +115 -0
  239. data/ext/rj_schema/rapidjson/include/rapidjson/memorybuffer.h +70 -0
  240. data/ext/rj_schema/rapidjson/include/rapidjson/memorystream.h +71 -0
  241. data/ext/rj_schema/rapidjson/include/rapidjson/msinttypes/inttypes.h +316 -0
  242. data/ext/rj_schema/rapidjson/include/rapidjson/msinttypes/stdint.h +300 -0
  243. data/ext/rj_schema/rapidjson/include/rapidjson/ostreamwrapper.h +81 -0
  244. data/ext/rj_schema/rapidjson/include/rapidjson/pointer.h +1363 -0
  245. data/ext/rj_schema/rapidjson/include/rapidjson/prettywriter.h +277 -0
  246. data/ext/rj_schema/rapidjson/include/rapidjson/rapidjson.h +628 -0
  247. data/ext/rj_schema/rapidjson/include/rapidjson/reader.h +2222 -0
  248. data/ext/rj_schema/rapidjson/include/rapidjson/schema.h +2479 -0
  249. data/ext/rj_schema/rapidjson/include/rapidjson/stream.h +223 -0
  250. data/ext/rj_schema/rapidjson/include/rapidjson/stringbuffer.h +121 -0
  251. data/ext/rj_schema/rapidjson/include/rapidjson/writer.h +716 -0
  252. data/ext/rj_schema/rapidjson/include_dirs.js +2 -0
  253. data/ext/rj_schema/rapidjson/library.json +15 -0
  254. data/ext/rj_schema/rapidjson/license.txt +57 -0
  255. data/ext/rj_schema/rapidjson/package.json +24 -0
  256. data/ext/rj_schema/rapidjson/rapidjson.autopkg +77 -0
  257. data/ext/rj_schema/rapidjson/readme.md +160 -0
  258. data/ext/rj_schema/rapidjson/readme.zh-cn.md +152 -0
  259. data/ext/rj_schema/rapidjson/test/CMakeLists.txt +20 -0
  260. data/ext/rj_schema/rapidjson/test/perftest/CMakeLists.txt +28 -0
  261. data/ext/rj_schema/rapidjson/test/perftest/misctest.cpp +974 -0
  262. data/ext/rj_schema/rapidjson/test/perftest/perftest.cpp +24 -0
  263. data/ext/rj_schema/rapidjson/test/perftest/perftest.h +185 -0
  264. data/ext/rj_schema/rapidjson/test/perftest/platformtest.cpp +166 -0
  265. data/ext/rj_schema/rapidjson/test/perftest/rapidjsontest.cpp +472 -0
  266. data/ext/rj_schema/rapidjson/test/perftest/schematest.cpp +216 -0
  267. data/ext/rj_schema/rapidjson/test/unittest/CMakeLists.txt +92 -0
  268. data/ext/rj_schema/rapidjson/test/unittest/allocatorstest.cpp +102 -0
  269. data/ext/rj_schema/rapidjson/test/unittest/bigintegertest.cpp +133 -0
  270. data/ext/rj_schema/rapidjson/test/unittest/cursorstreamwrappertest.cpp +115 -0
  271. data/ext/rj_schema/rapidjson/test/unittest/documenttest.cpp +672 -0
  272. data/ext/rj_schema/rapidjson/test/unittest/dtoatest.cpp +98 -0
  273. data/ext/rj_schema/rapidjson/test/unittest/encodedstreamtest.cpp +313 -0
  274. data/ext/rj_schema/rapidjson/test/unittest/encodingstest.cpp +451 -0
  275. data/ext/rj_schema/rapidjson/test/unittest/filestreamtest.cpp +112 -0
  276. data/ext/rj_schema/rapidjson/test/unittest/fwdtest.cpp +230 -0
  277. data/ext/rj_schema/rapidjson/test/unittest/istreamwrappertest.cpp +181 -0
  278. data/ext/rj_schema/rapidjson/test/unittest/itoatest.cpp +160 -0
  279. data/ext/rj_schema/rapidjson/test/unittest/jsoncheckertest.cpp +143 -0
  280. data/ext/rj_schema/rapidjson/test/unittest/namespacetest.cpp +70 -0
  281. data/ext/rj_schema/rapidjson/test/unittest/ostreamwrappertest.cpp +92 -0
  282. data/ext/rj_schema/rapidjson/test/unittest/pointertest.cpp +1529 -0
  283. data/ext/rj_schema/rapidjson/test/unittest/prettywritertest.cpp +344 -0
  284. data/ext/rj_schema/rapidjson/test/unittest/readertest.cpp +1895 -0
  285. data/ext/rj_schema/rapidjson/test/unittest/regextest.cpp +638 -0
  286. data/ext/rj_schema/rapidjson/test/unittest/schematest.cpp +2009 -0
  287. data/ext/rj_schema/rapidjson/test/unittest/simdtest.cpp +219 -0
  288. data/ext/rj_schema/rapidjson/test/unittest/strfunctest.cpp +30 -0
  289. data/ext/rj_schema/rapidjson/test/unittest/stringbuffertest.cpp +192 -0
  290. data/ext/rj_schema/rapidjson/test/unittest/strtodtest.cpp +132 -0
  291. data/ext/rj_schema/rapidjson/test/unittest/unittest.cpp +51 -0
  292. data/ext/rj_schema/rapidjson/test/unittest/unittest.h +140 -0
  293. data/ext/rj_schema/rapidjson/test/unittest/valuetest.cpp +1829 -0
  294. data/ext/rj_schema/rapidjson/test/unittest/writertest.cpp +598 -0
  295. data/ext/rj_schema/rapidjson/test/valgrind.supp +17 -0
  296. data/ext/rj_schema/rapidjson/travis-doxygen.sh +121 -0
  297. data/ext/rj_schema/rj_schema.cpp +136 -0
  298. data/lib/rj_schema.rb +7 -0
  299. metadata +371 -0
@@ -0,0 +1,173 @@
1
+ // Serialize example
2
+ // This example shows writing JSON string with writer directly.
3
+
4
+ #include "rapidjson/prettywriter.h" // for stringify JSON
5
+ #include <cstdio>
6
+ #include <string>
7
+ #include <vector>
8
+
9
+ using namespace rapidjson;
10
+
11
+ class Person {
12
+ public:
13
+ Person(const std::string& name, unsigned age) : name_(name), age_(age) {}
14
+ Person(const Person& rhs) : name_(rhs.name_), age_(rhs.age_) {}
15
+ virtual ~Person();
16
+
17
+ Person& operator=(const Person& rhs) {
18
+ name_ = rhs.name_;
19
+ age_ = rhs.age_;
20
+ return *this;
21
+ }
22
+
23
+ protected:
24
+ template <typename Writer>
25
+ void Serialize(Writer& writer) const {
26
+ // This base class just write out name-value pairs, without wrapping within an object.
27
+ writer.String("name");
28
+ #if RAPIDJSON_HAS_STDSTRING
29
+ writer.String(name_);
30
+ #else
31
+ writer.String(name_.c_str(), static_cast<SizeType>(name_.length())); // Supplying length of string is faster.
32
+ #endif
33
+ writer.String("age");
34
+ writer.Uint(age_);
35
+ }
36
+
37
+ private:
38
+ std::string name_;
39
+ unsigned age_;
40
+ };
41
+
42
+ Person::~Person() {
43
+ }
44
+
45
+ class Education {
46
+ public:
47
+ Education(const std::string& school, double GPA) : school_(school), GPA_(GPA) {}
48
+ Education(const Education& rhs) : school_(rhs.school_), GPA_(rhs.GPA_) {}
49
+
50
+ template <typename Writer>
51
+ void Serialize(Writer& writer) const {
52
+ writer.StartObject();
53
+
54
+ writer.String("school");
55
+ #if RAPIDJSON_HAS_STDSTRING
56
+ writer.String(school_);
57
+ #else
58
+ writer.String(school_.c_str(), static_cast<SizeType>(school_.length()));
59
+ #endif
60
+
61
+ writer.String("GPA");
62
+ writer.Double(GPA_);
63
+
64
+ writer.EndObject();
65
+ }
66
+
67
+ private:
68
+ std::string school_;
69
+ double GPA_;
70
+ };
71
+
72
+ class Dependent : public Person {
73
+ public:
74
+ Dependent(const std::string& name, unsigned age, Education* education = 0) : Person(name, age), education_(education) {}
75
+ Dependent(const Dependent& rhs) : Person(rhs), education_(0) { education_ = (rhs.education_ == 0) ? 0 : new Education(*rhs.education_); }
76
+ virtual ~Dependent();
77
+
78
+ Dependent& operator=(const Dependent& rhs) {
79
+ if (this == &rhs)
80
+ return *this;
81
+ delete education_;
82
+ education_ = (rhs.education_ == 0) ? 0 : new Education(*rhs.education_);
83
+ return *this;
84
+ }
85
+
86
+ template <typename Writer>
87
+ void Serialize(Writer& writer) const {
88
+ writer.StartObject();
89
+
90
+ Person::Serialize(writer);
91
+
92
+ writer.String("education");
93
+ if (education_)
94
+ education_->Serialize(writer);
95
+ else
96
+ writer.Null();
97
+
98
+ writer.EndObject();
99
+ }
100
+
101
+ private:
102
+
103
+ Education *education_;
104
+ };
105
+
106
+ Dependent::~Dependent() {
107
+ delete education_;
108
+ }
109
+
110
+ class Employee : public Person {
111
+ public:
112
+ Employee(const std::string& name, unsigned age, bool married) : Person(name, age), dependents_(), married_(married) {}
113
+ Employee(const Employee& rhs) : Person(rhs), dependents_(rhs.dependents_), married_(rhs.married_) {}
114
+ virtual ~Employee();
115
+
116
+ Employee& operator=(const Employee& rhs) {
117
+ static_cast<Person&>(*this) = rhs;
118
+ dependents_ = rhs.dependents_;
119
+ married_ = rhs.married_;
120
+ return *this;
121
+ }
122
+
123
+ void AddDependent(const Dependent& dependent) {
124
+ dependents_.push_back(dependent);
125
+ }
126
+
127
+ template <typename Writer>
128
+ void Serialize(Writer& writer) const {
129
+ writer.StartObject();
130
+
131
+ Person::Serialize(writer);
132
+
133
+ writer.String("married");
134
+ writer.Bool(married_);
135
+
136
+ writer.String(("dependents"));
137
+ writer.StartArray();
138
+ for (std::vector<Dependent>::const_iterator dependentItr = dependents_.begin(); dependentItr != dependents_.end(); ++dependentItr)
139
+ dependentItr->Serialize(writer);
140
+ writer.EndArray();
141
+
142
+ writer.EndObject();
143
+ }
144
+
145
+ private:
146
+ std::vector<Dependent> dependents_;
147
+ bool married_;
148
+ };
149
+
150
+ Employee::~Employee() {
151
+ }
152
+
153
+ int main(int, char*[]) {
154
+ std::vector<Employee> employees;
155
+
156
+ employees.push_back(Employee("Milo YIP", 34, true));
157
+ employees.back().AddDependent(Dependent("Lua YIP", 3, new Education("Happy Kindergarten", 3.5)));
158
+ employees.back().AddDependent(Dependent("Mio YIP", 1));
159
+
160
+ employees.push_back(Employee("Percy TSE", 30, false));
161
+
162
+ StringBuffer sb;
163
+ PrettyWriter<StringBuffer> writer(sb);
164
+
165
+ writer.StartArray();
166
+ for (std::vector<Employee>::const_iterator employeeItr = employees.begin(); employeeItr != employees.end(); ++employeeItr)
167
+ employeeItr->Serialize(writer);
168
+ writer.EndArray();
169
+
170
+ puts(sb.GetString());
171
+
172
+ return 0;
173
+ }
@@ -0,0 +1,29 @@
1
+ // JSON simple example
2
+ // This example does not handle errors.
3
+
4
+ #include "rapidjson/document.h"
5
+ #include "rapidjson/writer.h"
6
+ #include "rapidjson/stringbuffer.h"
7
+ #include <iostream>
8
+
9
+ using namespace rapidjson;
10
+
11
+ int main() {
12
+ // 1. Parse a JSON string into DOM.
13
+ const char* json = "{\"project\":\"rapidjson\",\"stars\":10}";
14
+ Document d;
15
+ d.Parse(json);
16
+
17
+ // 2. Modify it by DOM.
18
+ Value& s = d["stars"];
19
+ s.SetInt(s.GetInt() + 1);
20
+
21
+ // 3. Stringify the DOM
22
+ StringBuffer buffer;
23
+ Writer<StringBuffer> writer(buffer);
24
+ d.Accept(writer);
25
+
26
+ // Output {"project":"rapidjson","stars":11}
27
+ std::cout << buffer.GetString() << std::endl;
28
+ return 0;
29
+ }
@@ -0,0 +1,53 @@
1
+ #include "rapidjson/reader.h"
2
+ #include <iostream>
3
+ #include <sstream>
4
+
5
+ using namespace rapidjson;
6
+ using namespace std;
7
+
8
+ // If you can require C++11, you could use std::to_string here
9
+ template <typename T> std::string stringify(T x) {
10
+ std::stringstream ss;
11
+ ss << x;
12
+ return ss.str();
13
+ }
14
+
15
+ struct MyHandler {
16
+ const char* type;
17
+ std::string data;
18
+
19
+ MyHandler() : type(), data() {}
20
+
21
+ bool Null() { type = "Null"; data.clear(); return true; }
22
+ bool Bool(bool b) { type = "Bool:"; data = b? "true": "false"; return true; }
23
+ bool Int(int i) { type = "Int:"; data = stringify(i); return true; }
24
+ bool Uint(unsigned u) { type = "Uint:"; data = stringify(u); return true; }
25
+ bool Int64(int64_t i) { type = "Int64:"; data = stringify(i); return true; }
26
+ bool Uint64(uint64_t u) { type = "Uint64:"; data = stringify(u); return true; }
27
+ bool Double(double d) { type = "Double:"; data = stringify(d); return true; }
28
+ bool RawNumber(const char* str, SizeType length, bool) { type = "Number:"; data = std::string(str, length); return true; }
29
+ bool String(const char* str, SizeType length, bool) { type = "String:"; data = std::string(str, length); return true; }
30
+ bool StartObject() { type = "StartObject"; data.clear(); return true; }
31
+ bool Key(const char* str, SizeType length, bool) { type = "Key:"; data = std::string(str, length); return true; }
32
+ bool EndObject(SizeType memberCount) { type = "EndObject:"; data = stringify(memberCount); return true; }
33
+ bool StartArray() { type = "StartArray"; data.clear(); return true; }
34
+ bool EndArray(SizeType elementCount) { type = "EndArray:"; data = stringify(elementCount); return true; }
35
+ private:
36
+ MyHandler(const MyHandler& noCopyConstruction);
37
+ MyHandler& operator=(const MyHandler& noAssignment);
38
+ };
39
+
40
+ int main() {
41
+ const char json[] = " { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } ";
42
+
43
+ MyHandler handler;
44
+ Reader reader;
45
+ StringStream ss(json);
46
+ reader.IterativeParseInit();
47
+ while (!reader.IterativeParseComplete()) {
48
+ reader.IterativeParseNext<kParseDefaultFlags>(ss, handler);
49
+ cout << handler.type << handler.data << endl;
50
+ }
51
+
52
+ return 0;
53
+ }
@@ -0,0 +1,42 @@
1
+ #include "rapidjson/reader.h"
2
+ #include <iostream>
3
+
4
+ using namespace rapidjson;
5
+ using namespace std;
6
+
7
+ struct MyHandler {
8
+ bool Null() { cout << "Null()" << endl; return true; }
9
+ bool Bool(bool b) { cout << "Bool(" << boolalpha << b << ")" << endl; return true; }
10
+ bool Int(int i) { cout << "Int(" << i << ")" << endl; return true; }
11
+ bool Uint(unsigned u) { cout << "Uint(" << u << ")" << endl; return true; }
12
+ bool Int64(int64_t i) { cout << "Int64(" << i << ")" << endl; return true; }
13
+ bool Uint64(uint64_t u) { cout << "Uint64(" << u << ")" << endl; return true; }
14
+ bool Double(double d) { cout << "Double(" << d << ")" << endl; return true; }
15
+ bool RawNumber(const char* str, SizeType length, bool copy) {
16
+ cout << "Number(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl;
17
+ return true;
18
+ }
19
+ bool String(const char* str, SizeType length, bool copy) {
20
+ cout << "String(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl;
21
+ return true;
22
+ }
23
+ bool StartObject() { cout << "StartObject()" << endl; return true; }
24
+ bool Key(const char* str, SizeType length, bool copy) {
25
+ cout << "Key(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl;
26
+ return true;
27
+ }
28
+ bool EndObject(SizeType memberCount) { cout << "EndObject(" << memberCount << ")" << endl; return true; }
29
+ bool StartArray() { cout << "StartArray()" << endl; return true; }
30
+ bool EndArray(SizeType elementCount) { cout << "EndArray(" << elementCount << ")" << endl; return true; }
31
+ };
32
+
33
+ int main() {
34
+ const char json[] = " { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } ";
35
+
36
+ MyHandler handler;
37
+ Reader reader;
38
+ StringStream ss(json);
39
+ reader.Parse(ss, handler);
40
+
41
+ return 0;
42
+ }
@@ -0,0 +1,36 @@
1
+ #include "rapidjson/writer.h"
2
+ #include "rapidjson/stringbuffer.h"
3
+ #include <iostream>
4
+
5
+ using namespace rapidjson;
6
+ using namespace std;
7
+
8
+ int main() {
9
+ StringBuffer s;
10
+ Writer<StringBuffer> writer(s);
11
+
12
+ writer.StartObject(); // Between StartObject()/EndObject(),
13
+ writer.Key("hello"); // output a key,
14
+ writer.String("world"); // follow by a value.
15
+ writer.Key("t");
16
+ writer.Bool(true);
17
+ writer.Key("f");
18
+ writer.Bool(false);
19
+ writer.Key("n");
20
+ writer.Null();
21
+ writer.Key("i");
22
+ writer.Uint(123);
23
+ writer.Key("pi");
24
+ writer.Double(3.1416);
25
+ writer.Key("a");
26
+ writer.StartArray(); // Between StartArray()/EndArray(),
27
+ for (unsigned i = 0; i < 4; i++)
28
+ writer.Uint(i); // all values are elements of the array.
29
+ writer.EndArray();
30
+ writer.EndObject();
31
+
32
+ // {"hello":"world","t":true,"f":false,"n":null,"i":123,"pi":3.1416,"a":[0,1,2,3]}
33
+ cout << s.GetString() << endl;
34
+
35
+ return 0;
36
+ }
@@ -0,0 +1,151 @@
1
+ // Hello World example
2
+ // This example shows basic usage of DOM-style API.
3
+
4
+ #include "rapidjson/document.h" // rapidjson's DOM-style API
5
+ #include "rapidjson/prettywriter.h" // for stringify JSON
6
+ #include <cstdio>
7
+
8
+ using namespace rapidjson;
9
+ using namespace std;
10
+
11
+ int main(int, char*[]) {
12
+ ////////////////////////////////////////////////////////////////////////////
13
+ // 1. Parse a JSON text string to a document.
14
+
15
+ const char json[] = " { \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3, 4] } ";
16
+ printf("Original JSON:\n %s\n", json);
17
+
18
+ Document document; // Default template parameter uses UTF8 and MemoryPoolAllocator.
19
+
20
+ #if 0
21
+ // "normal" parsing, decode strings to new buffers. Can use other input stream via ParseStream().
22
+ if (document.Parse(json).HasParseError())
23
+ return 1;
24
+ #else
25
+ // In-situ parsing, decode strings directly in the source string. Source must be string.
26
+ char buffer[sizeof(json)];
27
+ memcpy(buffer, json, sizeof(json));
28
+ if (document.ParseInsitu(buffer).HasParseError())
29
+ return 1;
30
+ #endif
31
+
32
+ printf("\nParsing to document succeeded.\n");
33
+
34
+ ////////////////////////////////////////////////////////////////////////////
35
+ // 2. Access values in document.
36
+
37
+ printf("\nAccess values in document:\n");
38
+ assert(document.IsObject()); // Document is a JSON value represents the root of DOM. Root can be either an object or array.
39
+
40
+ assert(document.HasMember("hello"));
41
+ assert(document["hello"].IsString());
42
+ printf("hello = %s\n", document["hello"].GetString());
43
+
44
+ // Since version 0.2, you can use single lookup to check the existing of member and its value:
45
+ Value::MemberIterator hello = document.FindMember("hello");
46
+ assert(hello != document.MemberEnd());
47
+ assert(hello->value.IsString());
48
+ assert(strcmp("world", hello->value.GetString()) == 0);
49
+ (void)hello;
50
+
51
+ assert(document["t"].IsBool()); // JSON true/false are bool. Can also uses more specific function IsTrue().
52
+ printf("t = %s\n", document["t"].GetBool() ? "true" : "false");
53
+
54
+ assert(document["f"].IsBool());
55
+ printf("f = %s\n", document["f"].GetBool() ? "true" : "false");
56
+
57
+ printf("n = %s\n", document["n"].IsNull() ? "null" : "?");
58
+
59
+ assert(document["i"].IsNumber()); // Number is a JSON type, but C++ needs more specific type.
60
+ assert(document["i"].IsInt()); // In this case, IsUint()/IsInt64()/IsUInt64() also return true.
61
+ printf("i = %d\n", document["i"].GetInt()); // Alternative (int)document["i"]
62
+
63
+ assert(document["pi"].IsNumber());
64
+ assert(document["pi"].IsDouble());
65
+ printf("pi = %g\n", document["pi"].GetDouble());
66
+
67
+ {
68
+ const Value& a = document["a"]; // Using a reference for consecutive access is handy and faster.
69
+ assert(a.IsArray());
70
+ for (SizeType i = 0; i < a.Size(); i++) // rapidjson uses SizeType instead of size_t.
71
+ printf("a[%d] = %d\n", i, a[i].GetInt());
72
+
73
+ int y = a[0].GetInt();
74
+ (void)y;
75
+
76
+ // Iterating array with iterators
77
+ printf("a = ");
78
+ for (Value::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr)
79
+ printf("%d ", itr->GetInt());
80
+ printf("\n");
81
+ }
82
+
83
+ // Iterating object members
84
+ static const char* kTypeNames[] = { "Null", "False", "True", "Object", "Array", "String", "Number" };
85
+ for (Value::ConstMemberIterator itr = document.MemberBegin(); itr != document.MemberEnd(); ++itr)
86
+ printf("Type of member %s is %s\n", itr->name.GetString(), kTypeNames[itr->value.GetType()]);
87
+
88
+ ////////////////////////////////////////////////////////////////////////////
89
+ // 3. Modify values in document.
90
+
91
+ // Change i to a bigger number
92
+ {
93
+ uint64_t f20 = 1; // compute factorial of 20
94
+ for (uint64_t j = 1; j <= 20; j++)
95
+ f20 *= j;
96
+ document["i"] = f20; // Alternate form: document["i"].SetUint64(f20)
97
+ assert(!document["i"].IsInt()); // No longer can be cast as int or uint.
98
+ }
99
+
100
+ // Adding values to array.
101
+ {
102
+ Value& a = document["a"]; // This time we uses non-const reference.
103
+ Document::AllocatorType& allocator = document.GetAllocator();
104
+ for (int i = 5; i <= 10; i++)
105
+ a.PushBack(i, allocator); // May look a bit strange, allocator is needed for potentially realloc. We normally uses the document's.
106
+
107
+ // Fluent API
108
+ a.PushBack("Lua", allocator).PushBack("Mio", allocator);
109
+ }
110
+
111
+ // Making string values.
112
+
113
+ // This version of SetString() just store the pointer to the string.
114
+ // So it is for literal and string that exists within value's life-cycle.
115
+ {
116
+ document["hello"] = "rapidjson"; // This will invoke strlen()
117
+ // Faster version:
118
+ // document["hello"].SetString("rapidjson", 9);
119
+ }
120
+
121
+ // This version of SetString() needs an allocator, which means it will allocate a new buffer and copy the the string into the buffer.
122
+ Value author;
123
+ {
124
+ char buffer2[10];
125
+ int len = sprintf(buffer2, "%s %s", "Milo", "Yip"); // synthetic example of dynamically created string.
126
+
127
+ author.SetString(buffer2, static_cast<SizeType>(len), document.GetAllocator());
128
+ // Shorter but slower version:
129
+ // document["hello"].SetString(buffer, document.GetAllocator());
130
+
131
+ // Constructor version:
132
+ // Value author(buffer, len, document.GetAllocator());
133
+ // Value author(buffer, document.GetAllocator());
134
+ memset(buffer2, 0, sizeof(buffer2)); // For demonstration purpose.
135
+ }
136
+ // Variable 'buffer' is unusable now but 'author' has already made a copy.
137
+ document.AddMember("author", author, document.GetAllocator());
138
+
139
+ assert(author.IsNull()); // Move semantic for assignment. After this variable is assigned as a member, the variable becomes null.
140
+
141
+ ////////////////////////////////////////////////////////////////////////////
142
+ // 4. Stringify JSON
143
+
144
+ printf("\nModified JSON with reformatting:\n");
145
+ StringBuffer sb;
146
+ PrettyWriter<StringBuffer> writer(sb);
147
+ document.Accept(writer); // Accept() traverses the DOM and generates Handler events.
148
+ puts(sb.GetString());
149
+
150
+ return 0;
151
+ }