rj_schema 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,24 @@
1
+ // Tencent is pleased to support the open source community by making RapidJSON available.
2
+ //
3
+ // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4
+ //
5
+ // Licensed under the MIT License (the "License"); you may not use this file except
6
+ // in compliance with the License. You may obtain a copy of the License at
7
+ //
8
+ // http://opensource.org/licenses/MIT
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software distributed
11
+ // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12
+ // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13
+ // specific language governing permissions and limitations under the License.
14
+
15
+ #include "perftest.h"
16
+
17
+ int main(int argc, char **argv) {
18
+ #if _MSC_VER
19
+ _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
20
+ //void *testWhetherMemoryLeakDetectionWorks = malloc(1);
21
+ #endif
22
+ ::testing::InitGoogleTest(&argc, argv);
23
+ return RUN_ALL_TESTS();
24
+ }
@@ -0,0 +1,185 @@
1
+ // Tencent is pleased to support the open source community by making RapidJSON available.
2
+ //
3
+ // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4
+ //
5
+ // Licensed under the MIT License (the "License"); you may not use this file except
6
+ // in compliance with the License. You may obtain a copy of the License at
7
+ //
8
+ // http://opensource.org/licenses/MIT
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software distributed
11
+ // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12
+ // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13
+ // specific language governing permissions and limitations under the License.
14
+
15
+ #ifndef PERFTEST_H_
16
+ #define PERFTEST_H_
17
+
18
+ #define TEST_RAPIDJSON 1
19
+ #define TEST_PLATFORM 0
20
+ #define TEST_MISC 0
21
+
22
+ #define TEST_VERSION_CODE(x,y,z) \
23
+ (((x)*100000) + ((y)*100) + (z))
24
+
25
+ // __SSE2__ and __SSE4_2__ are recognized by gcc, clang, and the Intel compiler.
26
+ // We use -march=native with gmake to enable -msse2 and -msse4.2, if supported.
27
+ // Likewise, __ARM_NEON is used to detect Neon.
28
+ #if defined(__SSE4_2__)
29
+ # define RAPIDJSON_SSE42
30
+ #elif defined(__SSE2__)
31
+ # define RAPIDJSON_SSE2
32
+ #elif defined(__ARM_NEON)
33
+ # define RAPIDJSON_NEON
34
+ #endif
35
+
36
+ #define RAPIDJSON_HAS_STDSTRING 1
37
+
38
+ ////////////////////////////////////////////////////////////////////////////////
39
+ // Google Test
40
+
41
+ #ifdef __cplusplus
42
+
43
+ // gtest indirectly included inttypes.h, without __STDC_CONSTANT_MACROS.
44
+ #ifndef __STDC_CONSTANT_MACROS
45
+ # define __STDC_CONSTANT_MACROS 1 // required by C++ standard
46
+ #endif
47
+
48
+ #if defined(__clang__) || defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2))
49
+ #if defined(__clang__) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
50
+ #pragma GCC diagnostic push
51
+ #endif
52
+ #pragma GCC diagnostic ignored "-Weffc++"
53
+ #endif
54
+
55
+ #include "gtest/gtest.h"
56
+
57
+ #if defined(__clang__) || defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
58
+ #pragma GCC diagnostic pop
59
+ #endif
60
+
61
+ #ifdef _MSC_VER
62
+ #define _CRTDBG_MAP_ALLOC
63
+ #include <crtdbg.h>
64
+ #pragma warning(disable : 4996) // 'function': was declared deprecated
65
+ #endif
66
+
67
+ //! Base class for all performance tests
68
+ class PerfTest : public ::testing::Test {
69
+ public:
70
+ PerfTest() : filename_(), json_(), length_(), whitespace_(), whitespace_length_() {}
71
+
72
+ virtual void SetUp() {
73
+ {
74
+ const char *paths[] = {
75
+ "data/sample.json",
76
+ "bin/data/sample.json",
77
+ "../bin/data/sample.json",
78
+ "../../bin/data/sample.json",
79
+ "../../../bin/data/sample.json"
80
+ };
81
+
82
+ FILE *fp = 0;
83
+ for (size_t i = 0; i < sizeof(paths) / sizeof(paths[0]); i++) {
84
+ fp = fopen(filename_ = paths[i], "rb");
85
+ if (fp)
86
+ break;
87
+ }
88
+ ASSERT_TRUE(fp != 0);
89
+
90
+ fseek(fp, 0, SEEK_END);
91
+ length_ = (size_t)ftell(fp);
92
+ fseek(fp, 0, SEEK_SET);
93
+ json_ = (char*)malloc(length_ + 1);
94
+ ASSERT_EQ(length_, fread(json_, 1, length_, fp));
95
+ json_[length_] = '\0';
96
+ fclose(fp);
97
+ }
98
+
99
+ // whitespace test
100
+ {
101
+ whitespace_length_ = 1024 * 1024;
102
+ whitespace_ = (char *)malloc(whitespace_length_ + 4);
103
+ char *p = whitespace_;
104
+ for (size_t i = 0; i < whitespace_length_; i += 4) {
105
+ *p++ = ' ';
106
+ *p++ = '\n';
107
+ *p++ = '\r';
108
+ *p++ = '\t';
109
+ }
110
+ *p++ = '[';
111
+ *p++ = '0';
112
+ *p++ = ']';
113
+ *p++ = '\0';
114
+ }
115
+
116
+ // types test
117
+ {
118
+ const char *typespaths[] = {
119
+ "data/types",
120
+ "bin/types",
121
+ "../bin/types",
122
+ "../../bin/types/",
123
+ "../../../bin/types"
124
+ };
125
+
126
+ const char* typesfilenames[] = {
127
+ "booleans.json",
128
+ "floats.json",
129
+ "guids.json",
130
+ "integers.json",
131
+ "mixed.json",
132
+ "nulls.json",
133
+ "paragraphs.json"
134
+ };
135
+
136
+ for (size_t j = 0; j < sizeof(typesfilenames) / sizeof(typesfilenames[0]); j++) {
137
+ types_[j] = 0;
138
+ for (size_t i = 0; i < sizeof(typespaths) / sizeof(typespaths[0]); i++) {
139
+ char filename[256];
140
+ sprintf(filename, "%s/%s", typespaths[i], typesfilenames[j]);
141
+ if (FILE* fp = fopen(filename, "rb")) {
142
+ fseek(fp, 0, SEEK_END);
143
+ typesLength_[j] = (size_t)ftell(fp);
144
+ fseek(fp, 0, SEEK_SET);
145
+ types_[j] = (char*)malloc(typesLength_[j] + 1);
146
+ ASSERT_EQ(typesLength_[j], fread(types_[j], 1, typesLength_[j], fp));
147
+ types_[j][typesLength_[j]] = '\0';
148
+ fclose(fp);
149
+ break;
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+
156
+ virtual void TearDown() {
157
+ free(json_);
158
+ free(whitespace_);
159
+ json_ = 0;
160
+ whitespace_ = 0;
161
+ for (size_t i = 0; i < 7; i++) {
162
+ free(types_[i]);
163
+ types_[i] = 0;
164
+ }
165
+ }
166
+
167
+ private:
168
+ PerfTest(const PerfTest&);
169
+ PerfTest& operator=(const PerfTest&);
170
+
171
+ protected:
172
+ const char* filename_;
173
+ char *json_;
174
+ size_t length_;
175
+ char *whitespace_;
176
+ size_t whitespace_length_;
177
+ char *types_[7];
178
+ size_t typesLength_[7];
179
+
180
+ static const size_t kTrialCount = 1000;
181
+ };
182
+
183
+ #endif // __cplusplus
184
+
185
+ #endif // PERFTEST_H_
@@ -0,0 +1,166 @@
1
+ // Tencent is pleased to support the open source community by making RapidJSON available.
2
+ //
3
+ // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4
+ //
5
+ // Licensed under the MIT License (the "License"); you may not use this file except
6
+ // in compliance with the License. You may obtain a copy of the License at
7
+ //
8
+ // http://opensource.org/licenses/MIT
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software distributed
11
+ // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12
+ // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13
+ // specific language governing permissions and limitations under the License.
14
+
15
+ #include "perftest.h"
16
+
17
+ // This file is for giving the performance characteristics of the platform (compiler/OS/CPU).
18
+
19
+ #if TEST_PLATFORM
20
+
21
+ #include <cmath>
22
+ #include <fcntl.h>
23
+
24
+ // Windows
25
+ #ifdef _WIN32
26
+ #include <windows.h>
27
+ #endif
28
+
29
+ // UNIX
30
+ #if defined(unix) || defined(__unix__) || defined(__unix)
31
+ #include <unistd.h>
32
+ #ifdef _POSIX_MAPPED_FILES
33
+ #include <sys/mman.h>
34
+ #endif
35
+ #endif
36
+
37
+ class Platform : public PerfTest {
38
+ public:
39
+ virtual void SetUp() {
40
+ PerfTest::SetUp();
41
+
42
+ // temp buffer for testing
43
+ temp_ = (char *)malloc(length_ + 1);
44
+ memcpy(temp_, json_, length_);
45
+ checkSum_ = CheckSum();
46
+ }
47
+
48
+ char CheckSum() {
49
+ char c = 0;
50
+ for (size_t i = 0; i < length_; ++i)
51
+ c += temp_[i];
52
+ return c;
53
+ }
54
+
55
+ virtual void TearDown() {
56
+ PerfTest::TearDown();
57
+ free(temp_);
58
+ }
59
+
60
+ protected:
61
+ char *temp_;
62
+ char checkSum_;
63
+ };
64
+
65
+ TEST_F(Platform, CheckSum) {
66
+ for (int i = 0; i < kTrialCount; i++)
67
+ EXPECT_EQ(checkSum_, CheckSum());
68
+ }
69
+
70
+ TEST_F(Platform, strlen) {
71
+ for (int i = 0; i < kTrialCount; i++) {
72
+ size_t l = strlen(json_);
73
+ EXPECT_EQ(length_, l);
74
+ }
75
+ }
76
+
77
+ TEST_F(Platform, memcmp) {
78
+ for (int i = 0; i < kTrialCount; i++) {
79
+ EXPECT_EQ(0, memcmp(temp_, json_, length_));
80
+ }
81
+ }
82
+
83
+ TEST_F(Platform, pow) {
84
+ double sum = 0;
85
+ for (int i = 0; i < kTrialCount * kTrialCount; i++)
86
+ sum += pow(10.0, i & 255);
87
+ EXPECT_GT(sum, 0.0);
88
+ }
89
+
90
+ TEST_F(Platform, Whitespace_strlen) {
91
+ for (int i = 0; i < kTrialCount; i++) {
92
+ size_t l = strlen(whitespace_);
93
+ EXPECT_GT(l, whitespace_length_);
94
+ }
95
+ }
96
+
97
+ TEST_F(Platform, Whitespace_strspn) {
98
+ for (int i = 0; i < kTrialCount; i++) {
99
+ size_t l = strspn(whitespace_, " \n\r\t");
100
+ EXPECT_EQ(whitespace_length_, l);
101
+ }
102
+ }
103
+
104
+ TEST_F(Platform, fread) {
105
+ for (int i = 0; i < kTrialCount; i++) {
106
+ FILE *fp = fopen(filename_, "rb");
107
+ ASSERT_EQ(length_, fread(temp_, 1, length_, fp));
108
+ EXPECT_EQ(checkSum_, CheckSum());
109
+ fclose(fp);
110
+ }
111
+ }
112
+
113
+ #ifdef _MSC_VER
114
+ TEST_F(Platform, read) {
115
+ for (int i = 0; i < kTrialCount; i++) {
116
+ int fd = _open(filename_, _O_BINARY | _O_RDONLY);
117
+ ASSERT_NE(-1, fd);
118
+ ASSERT_EQ(length_, _read(fd, temp_, length_));
119
+ EXPECT_EQ(checkSum_, CheckSum());
120
+ _close(fd);
121
+ }
122
+ }
123
+ #else
124
+ TEST_F(Platform, read) {
125
+ for (int i = 0; i < kTrialCount; i++) {
126
+ int fd = open(filename_, O_RDONLY);
127
+ ASSERT_NE(-1, fd);
128
+ ASSERT_EQ(length_, read(fd, temp_, length_));
129
+ EXPECT_EQ(checkSum_, CheckSum());
130
+ close(fd);
131
+ }
132
+ }
133
+ #endif
134
+
135
+ #ifdef _WIN32
136
+ TEST_F(Platform, MapViewOfFile) {
137
+ for (int i = 0; i < kTrialCount; i++) {
138
+ HANDLE file = CreateFile(filename_, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
139
+ ASSERT_NE(INVALID_HANDLE_VALUE, file);
140
+ HANDLE mapObject = CreateFileMapping(file, NULL, PAGE_READONLY, 0, length_, NULL);
141
+ ASSERT_NE(INVALID_HANDLE_VALUE, mapObject);
142
+ void *p = MapViewOfFile(mapObject, FILE_MAP_READ, 0, 0, length_);
143
+ ASSERT_TRUE(p != NULL);
144
+ EXPECT_EQ(checkSum_, CheckSum());
145
+ ASSERT_TRUE(UnmapViewOfFile(p) == TRUE);
146
+ ASSERT_TRUE(CloseHandle(mapObject) == TRUE);
147
+ ASSERT_TRUE(CloseHandle(file) == TRUE);
148
+ }
149
+ }
150
+ #endif
151
+
152
+ #ifdef _POSIX_MAPPED_FILES
153
+ TEST_F(Platform, mmap) {
154
+ for (int i = 0; i < kTrialCount; i++) {
155
+ int fd = open(filename_, O_RDONLY);
156
+ ASSERT_NE(-1, fd);
157
+ void *p = mmap(NULL, length_, PROT_READ, MAP_PRIVATE, fd, 0);
158
+ ASSERT_TRUE(p != NULL);
159
+ EXPECT_EQ(checkSum_, CheckSum());
160
+ munmap(p, length_);
161
+ close(fd);
162
+ }
163
+ }
164
+ #endif
165
+
166
+ #endif // TEST_PLATFORM
@@ -0,0 +1,472 @@
1
+ // Tencent is pleased to support the open source community by making RapidJSON available.
2
+ //
3
+ // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4
+ //
5
+ // Licensed under the MIT License (the "License"); you may not use this file except
6
+ // in compliance with the License. You may obtain a copy of the License at
7
+ //
8
+ // http://opensource.org/licenses/MIT
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software distributed
11
+ // under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12
+ // CONDITIONS OF ANY KIND, either express or implied. See the License for the
13
+ // specific language governing permissions and limitations under the License.
14
+
15
+ #include "perftest.h"
16
+
17
+ #if TEST_RAPIDJSON
18
+
19
+ #include "rapidjson/rapidjson.h"
20
+ #include "rapidjson/document.h"
21
+ #include "rapidjson/prettywriter.h"
22
+ #include "rapidjson/stringbuffer.h"
23
+ #include "rapidjson/filereadstream.h"
24
+ #include "rapidjson/encodedstream.h"
25
+ #include "rapidjson/memorystream.h"
26
+
27
+ #ifdef RAPIDJSON_SSE2
28
+ #define SIMD_SUFFIX(name) name##_SSE2
29
+ #elif defined(RAPIDJSON_SSE42)
30
+ #define SIMD_SUFFIX(name) name##_SSE42
31
+ #elif defined(RAPIDJSON_NEON)
32
+ #define SIMD_SUFFIX(name) name##_NEON
33
+ #else
34
+ #define SIMD_SUFFIX(name) name
35
+ #endif
36
+
37
+ using namespace rapidjson;
38
+
39
+ class RapidJson : public PerfTest {
40
+ public:
41
+ RapidJson() : temp_(), doc_() {}
42
+
43
+ virtual void SetUp() {
44
+ PerfTest::SetUp();
45
+
46
+ // temp buffer for insitu parsing.
47
+ temp_ = (char *)malloc(length_ + 1);
48
+
49
+ // Parse as a document
50
+ EXPECT_FALSE(doc_.Parse(json_).HasParseError());
51
+
52
+ for (size_t i = 0; i < 7; i++)
53
+ EXPECT_FALSE(typesDoc_[i].Parse(types_[i]).HasParseError());
54
+ }
55
+
56
+ virtual void TearDown() {
57
+ PerfTest::TearDown();
58
+ free(temp_);
59
+ }
60
+
61
+ private:
62
+ RapidJson(const RapidJson&);
63
+ RapidJson& operator=(const RapidJson&);
64
+
65
+ protected:
66
+ char *temp_;
67
+ Document doc_;
68
+ Document typesDoc_[7];
69
+ };
70
+
71
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseInsitu_DummyHandler)) {
72
+ for (size_t i = 0; i < kTrialCount; i++) {
73
+ memcpy(temp_, json_, length_ + 1);
74
+ InsituStringStream s(temp_);
75
+ BaseReaderHandler<> h;
76
+ Reader reader;
77
+ EXPECT_TRUE(reader.Parse<kParseInsituFlag>(s, h));
78
+ }
79
+ }
80
+
81
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseInsitu_DummyHandler_ValidateEncoding)) {
82
+ for (size_t i = 0; i < kTrialCount; i++) {
83
+ memcpy(temp_, json_, length_ + 1);
84
+ InsituStringStream s(temp_);
85
+ BaseReaderHandler<> h;
86
+ Reader reader;
87
+ EXPECT_TRUE(reader.Parse<kParseInsituFlag | kParseValidateEncodingFlag>(s, h));
88
+ }
89
+ }
90
+
91
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler)) {
92
+ for (size_t i = 0; i < kTrialCount; i++) {
93
+ StringStream s(json_);
94
+ BaseReaderHandler<> h;
95
+ Reader reader;
96
+ EXPECT_TRUE(reader.Parse(s, h));
97
+ }
98
+ }
99
+
100
+ #define TEST_TYPED(index, Name)\
101
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_##Name)) {\
102
+ for (size_t i = 0; i < kTrialCount * 10; i++) {\
103
+ StringStream s(types_[index]);\
104
+ BaseReaderHandler<> h;\
105
+ Reader reader;\
106
+ EXPECT_TRUE(reader.Parse(s, h));\
107
+ }\
108
+ }\
109
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseInsitu_DummyHandler_##Name)) {\
110
+ for (size_t i = 0; i < kTrialCount * 10; i++) {\
111
+ memcpy(temp_, types_[index], typesLength_[index] + 1);\
112
+ InsituStringStream s(temp_);\
113
+ BaseReaderHandler<> h;\
114
+ Reader reader;\
115
+ EXPECT_TRUE(reader.Parse<kParseInsituFlag>(s, h));\
116
+ }\
117
+ }
118
+
119
+ TEST_TYPED(0, Booleans)
120
+ TEST_TYPED(1, Floats)
121
+ TEST_TYPED(2, Guids)
122
+ TEST_TYPED(3, Integers)
123
+ TEST_TYPED(4, Mixed)
124
+ TEST_TYPED(5, Nulls)
125
+ TEST_TYPED(6, Paragraphs)
126
+
127
+ #undef TEST_TYPED
128
+
129
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_FullPrecision)) {
130
+ for (size_t i = 0; i < kTrialCount; i++) {
131
+ StringStream s(json_);
132
+ BaseReaderHandler<> h;
133
+ Reader reader;
134
+ EXPECT_TRUE(reader.Parse<kParseFullPrecisionFlag>(s, h));
135
+ }
136
+ }
137
+
138
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseIterative_DummyHandler)) {
139
+ for (size_t i = 0; i < kTrialCount; i++) {
140
+ StringStream s(json_);
141
+ BaseReaderHandler<> h;
142
+ Reader reader;
143
+ EXPECT_TRUE(reader.Parse<kParseIterativeFlag>(s, h));
144
+ }
145
+ }
146
+
147
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseIterativeInsitu_DummyHandler)) {
148
+ for (size_t i = 0; i < kTrialCount; i++) {
149
+ memcpy(temp_, json_, length_ + 1);
150
+ InsituStringStream s(temp_);
151
+ BaseReaderHandler<> h;
152
+ Reader reader;
153
+ EXPECT_TRUE(reader.Parse<kParseIterativeFlag|kParseInsituFlag>(s, h));
154
+ }
155
+ }
156
+
157
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseIterativePull_DummyHandler)) {
158
+ for (size_t i = 0; i < kTrialCount; i++) {
159
+ StringStream s(json_);
160
+ BaseReaderHandler<> h;
161
+ Reader reader;
162
+ reader.IterativeParseInit();
163
+ while (!reader.IterativeParseComplete()) {
164
+ if (!reader.IterativeParseNext<kParseDefaultFlags>(s, h))
165
+ break;
166
+ }
167
+ EXPECT_FALSE(reader.HasParseError());
168
+ }
169
+ }
170
+
171
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParseIterativePullInsitu_DummyHandler)) {
172
+ for (size_t i = 0; i < kTrialCount; i++) {
173
+ memcpy(temp_, json_, length_ + 1);
174
+ InsituStringStream s(temp_);
175
+ BaseReaderHandler<> h;
176
+ Reader reader;
177
+ reader.IterativeParseInit();
178
+ while (!reader.IterativeParseComplete()) {
179
+ if (!reader.IterativeParseNext<kParseDefaultFlags|kParseInsituFlag>(s, h))
180
+ break;
181
+ }
182
+ EXPECT_FALSE(reader.HasParseError());
183
+ }
184
+ }
185
+
186
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_ValidateEncoding)) {
187
+ for (size_t i = 0; i < kTrialCount; i++) {
188
+ StringStream s(json_);
189
+ BaseReaderHandler<> h;
190
+ Reader reader;
191
+ EXPECT_TRUE(reader.Parse<kParseValidateEncodingFlag>(s, h));
192
+ }
193
+ }
194
+
195
+ TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseInsitu_MemoryPoolAllocator)) {
196
+ for (size_t i = 0; i < kTrialCount; i++) {
197
+ memcpy(temp_, json_, length_ + 1);
198
+ Document doc;
199
+ doc.ParseInsitu(temp_);
200
+ ASSERT_TRUE(doc.IsObject());
201
+ }
202
+ }
203
+
204
+ TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseIterativeInsitu_MemoryPoolAllocator)) {
205
+ for (size_t i = 0; i < kTrialCount; i++) {
206
+ memcpy(temp_, json_, length_ + 1);
207
+ Document doc;
208
+ doc.ParseInsitu<kParseIterativeFlag>(temp_);
209
+ ASSERT_TRUE(doc.IsObject());
210
+ }
211
+ }
212
+
213
+ TEST_F(RapidJson, SIMD_SUFFIX(DocumentParse_MemoryPoolAllocator)) {
214
+ for (size_t i = 0; i < kTrialCount; i++) {
215
+ Document doc;
216
+ doc.Parse(json_);
217
+ ASSERT_TRUE(doc.IsObject());
218
+ }
219
+ }
220
+
221
+ TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseLength_MemoryPoolAllocator)) {
222
+ for (size_t i = 0; i < kTrialCount; i++) {
223
+ Document doc;
224
+ doc.Parse(json_, length_);
225
+ ASSERT_TRUE(doc.IsObject());
226
+ }
227
+ }
228
+
229
+ #if RAPIDJSON_HAS_STDSTRING
230
+ TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseStdString_MemoryPoolAllocator)) {
231
+ const std::string s(json_, length_);
232
+ for (size_t i = 0; i < kTrialCount; i++) {
233
+ Document doc;
234
+ doc.Parse(s);
235
+ ASSERT_TRUE(doc.IsObject());
236
+ }
237
+ }
238
+ #endif
239
+
240
+ TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseIterative_MemoryPoolAllocator)) {
241
+ for (size_t i = 0; i < kTrialCount; i++) {
242
+ Document doc;
243
+ doc.Parse<kParseIterativeFlag>(json_);
244
+ ASSERT_TRUE(doc.IsObject());
245
+ }
246
+ }
247
+
248
+ TEST_F(RapidJson, SIMD_SUFFIX(DocumentParse_CrtAllocator)) {
249
+ for (size_t i = 0; i < kTrialCount; i++) {
250
+ memcpy(temp_, json_, length_ + 1);
251
+ GenericDocument<UTF8<>, CrtAllocator> doc;
252
+ doc.Parse(temp_);
253
+ ASSERT_TRUE(doc.IsObject());
254
+ }
255
+ }
256
+
257
+ TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseEncodedInputStream_MemoryStream)) {
258
+ for (size_t i = 0; i < kTrialCount; i++) {
259
+ MemoryStream ms(json_, length_);
260
+ EncodedInputStream<UTF8<>, MemoryStream> is(ms);
261
+ Document doc;
262
+ doc.ParseStream<0, UTF8<> >(is);
263
+ ASSERT_TRUE(doc.IsObject());
264
+ }
265
+ }
266
+
267
+ TEST_F(RapidJson, SIMD_SUFFIX(DocumentParseAutoUTFInputStream_MemoryStream)) {
268
+ for (size_t i = 0; i < kTrialCount; i++) {
269
+ MemoryStream ms(json_, length_);
270
+ AutoUTFInputStream<unsigned, MemoryStream> is(ms);
271
+ Document doc;
272
+ doc.ParseStream<0, AutoUTF<unsigned> >(is);
273
+ ASSERT_TRUE(doc.IsObject());
274
+ }
275
+ }
276
+
277
+ template<typename T>
278
+ size_t Traverse(const T& value) {
279
+ size_t count = 1;
280
+ switch(value.GetType()) {
281
+ case kObjectType:
282
+ for (typename T::ConstMemberIterator itr = value.MemberBegin(); itr != value.MemberEnd(); ++itr) {
283
+ count++; // name
284
+ count += Traverse(itr->value);
285
+ }
286
+ break;
287
+
288
+ case kArrayType:
289
+ for (typename T::ConstValueIterator itr = value.Begin(); itr != value.End(); ++itr)
290
+ count += Traverse(*itr);
291
+ break;
292
+
293
+ default:
294
+ // Do nothing.
295
+ break;
296
+ }
297
+ return count;
298
+ }
299
+
300
+ TEST_F(RapidJson, DocumentTraverse) {
301
+ for (size_t i = 0; i < kTrialCount; i++) {
302
+ size_t count = Traverse(doc_);
303
+ EXPECT_EQ(4339u, count);
304
+ //if (i == 0)
305
+ // std::cout << count << std::endl;
306
+ }
307
+ }
308
+
309
+ #ifdef __GNUC__
310
+ RAPIDJSON_DIAG_PUSH
311
+ RAPIDJSON_DIAG_OFF(effc++)
312
+ #endif
313
+
314
+ struct ValueCounter : public BaseReaderHandler<> {
315
+ ValueCounter() : count_(1) {} // root
316
+
317
+ bool EndObject(SizeType memberCount) { count_ += memberCount * 2; return true; }
318
+ bool EndArray(SizeType elementCount) { count_ += elementCount; return true; }
319
+
320
+ SizeType count_;
321
+ };
322
+
323
+ #ifdef __GNUC__
324
+ RAPIDJSON_DIAG_POP
325
+ #endif
326
+
327
+ TEST_F(RapidJson, DocumentAccept) {
328
+ for (size_t i = 0; i < kTrialCount; i++) {
329
+ ValueCounter counter;
330
+ doc_.Accept(counter);
331
+ EXPECT_EQ(4339u, counter.count_);
332
+ }
333
+ }
334
+
335
+ struct NullStream {
336
+ typedef char Ch;
337
+
338
+ NullStream() /*: length_(0)*/ {}
339
+ void Put(Ch) { /*++length_;*/ }
340
+ void Flush() {}
341
+ //size_t length_;
342
+ };
343
+
344
+ TEST_F(RapidJson, Writer_NullStream) {
345
+ for (size_t i = 0; i < kTrialCount; i++) {
346
+ NullStream s;
347
+ Writer<NullStream> writer(s);
348
+ doc_.Accept(writer);
349
+ //if (i == 0)
350
+ // std::cout << s.length_ << std::endl;
351
+ }
352
+ }
353
+
354
+ TEST_F(RapidJson, SIMD_SUFFIX(Writer_StringBuffer)) {
355
+ for (size_t i = 0; i < kTrialCount; i++) {
356
+ StringBuffer s(0, 1024 * 1024);
357
+ Writer<StringBuffer> writer(s);
358
+ doc_.Accept(writer);
359
+ const char* str = s.GetString();
360
+ (void)str;
361
+ //if (i == 0)
362
+ // std::cout << strlen(str) << std::endl;
363
+ }
364
+ }
365
+
366
+ #define TEST_TYPED(index, Name)\
367
+ TEST_F(RapidJson, SIMD_SUFFIX(Writer_StringBuffer_##Name)) {\
368
+ for (size_t i = 0; i < kTrialCount * 10; i++) {\
369
+ StringBuffer s(0, 1024 * 1024);\
370
+ Writer<StringBuffer> writer(s);\
371
+ typesDoc_[index].Accept(writer);\
372
+ const char* str = s.GetString();\
373
+ (void)str;\
374
+ }\
375
+ }
376
+
377
+ TEST_TYPED(0, Booleans)
378
+ TEST_TYPED(1, Floats)
379
+ TEST_TYPED(2, Guids)
380
+ TEST_TYPED(3, Integers)
381
+ TEST_TYPED(4, Mixed)
382
+ TEST_TYPED(5, Nulls)
383
+ TEST_TYPED(6, Paragraphs)
384
+
385
+ #undef TEST_TYPED
386
+
387
+ TEST_F(RapidJson, SIMD_SUFFIX(PrettyWriter_StringBuffer)) {
388
+ for (size_t i = 0; i < kTrialCount; i++) {
389
+ StringBuffer s(0, 2048 * 1024);
390
+ PrettyWriter<StringBuffer> writer(s);
391
+ writer.SetIndent(' ', 1);
392
+ doc_.Accept(writer);
393
+ const char* str = s.GetString();
394
+ (void)str;
395
+ //if (i == 0)
396
+ // std::cout << strlen(str) << std::endl;
397
+ }
398
+ }
399
+
400
+ TEST_F(RapidJson, internal_Pow10) {
401
+ double sum = 0;
402
+ for (size_t i = 0; i < kTrialCount * kTrialCount; i++)
403
+ sum += internal::Pow10(int(i & 255));
404
+ EXPECT_GT(sum, 0.0);
405
+ }
406
+
407
+ TEST_F(RapidJson, SkipWhitespace_Basic) {
408
+ for (size_t i = 0; i < kTrialCount; i++) {
409
+ rapidjson::StringStream s(whitespace_);
410
+ while (s.Peek() == ' ' || s.Peek() == '\n' || s.Peek() == '\r' || s.Peek() == '\t')
411
+ s.Take();
412
+ ASSERT_EQ('[', s.Peek());
413
+ }
414
+ }
415
+
416
+ TEST_F(RapidJson, SIMD_SUFFIX(SkipWhitespace)) {
417
+ for (size_t i = 0; i < kTrialCount; i++) {
418
+ rapidjson::StringStream s(whitespace_);
419
+ rapidjson::SkipWhitespace(s);
420
+ ASSERT_EQ('[', s.Peek());
421
+ }
422
+ }
423
+
424
+ TEST_F(RapidJson, SkipWhitespace_strspn) {
425
+ for (size_t i = 0; i < kTrialCount; i++) {
426
+ const char* s = whitespace_ + std::strspn(whitespace_, " \t\r\n");
427
+ ASSERT_EQ('[', *s);
428
+ }
429
+ }
430
+
431
+ TEST_F(RapidJson, UTF8_Validate) {
432
+ NullStream os;
433
+
434
+ for (size_t i = 0; i < kTrialCount; i++) {
435
+ StringStream is(json_);
436
+ bool result = true;
437
+ while (is.Peek() != '\0')
438
+ result &= UTF8<>::Validate(is, os);
439
+ EXPECT_TRUE(result);
440
+ }
441
+ }
442
+
443
+ TEST_F(RapidJson, FileReadStream) {
444
+ for (size_t i = 0; i < kTrialCount; i++) {
445
+ FILE *fp = fopen(filename_, "rb");
446
+ char buffer[65536];
447
+ FileReadStream s(fp, buffer, sizeof(buffer));
448
+ while (s.Take() != '\0')
449
+ ;
450
+ fclose(fp);
451
+ }
452
+ }
453
+
454
+ TEST_F(RapidJson, SIMD_SUFFIX(ReaderParse_DummyHandler_FileReadStream)) {
455
+ for (size_t i = 0; i < kTrialCount; i++) {
456
+ FILE *fp = fopen(filename_, "rb");
457
+ char buffer[65536];
458
+ FileReadStream s(fp, buffer, sizeof(buffer));
459
+ BaseReaderHandler<> h;
460
+ Reader reader;
461
+ reader.Parse(s, h);
462
+ fclose(fp);
463
+ }
464
+ }
465
+
466
+ TEST_F(RapidJson, StringBuffer) {
467
+ StringBuffer sb;
468
+ for (int i = 0; i < 32 * 1024 * 1024; i++)
469
+ sb.Put(i & 0x7f);
470
+ }
471
+
472
+ #endif // TEST_RAPIDJSON