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,277 @@
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 RAPIDJSON_PRETTYWRITER_H_
16
+ #define RAPIDJSON_PRETTYWRITER_H_
17
+
18
+ #include "writer.h"
19
+
20
+ #ifdef __GNUC__
21
+ RAPIDJSON_DIAG_PUSH
22
+ RAPIDJSON_DIAG_OFF(effc++)
23
+ #endif
24
+
25
+ #if defined(__clang__)
26
+ RAPIDJSON_DIAG_PUSH
27
+ RAPIDJSON_DIAG_OFF(c++98-compat)
28
+ #endif
29
+
30
+ RAPIDJSON_NAMESPACE_BEGIN
31
+
32
+ //! Combination of PrettyWriter format flags.
33
+ /*! \see PrettyWriter::SetFormatOptions
34
+ */
35
+ enum PrettyFormatOptions {
36
+ kFormatDefault = 0, //!< Default pretty formatting.
37
+ kFormatSingleLineArray = 1 //!< Format arrays on a single line.
38
+ };
39
+
40
+ //! Writer with indentation and spacing.
41
+ /*!
42
+ \tparam OutputStream Type of ouptut os.
43
+ \tparam SourceEncoding Encoding of source string.
44
+ \tparam TargetEncoding Encoding of output stream.
45
+ \tparam StackAllocator Type of allocator for allocating memory of stack.
46
+ */
47
+ template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
48
+ class PrettyWriter : public Writer<OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags> {
49
+ public:
50
+ typedef Writer<OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags> Base;
51
+ typedef typename Base::Ch Ch;
52
+
53
+ //! Constructor
54
+ /*! \param os Output stream.
55
+ \param allocator User supplied allocator. If it is null, it will create a private one.
56
+ \param levelDepth Initial capacity of stack.
57
+ */
58
+ explicit PrettyWriter(OutputStream& os, StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) :
59
+ Base(os, allocator, levelDepth), indentChar_(' '), indentCharCount_(4), formatOptions_(kFormatDefault) {}
60
+
61
+
62
+ explicit PrettyWriter(StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) :
63
+ Base(allocator, levelDepth), indentChar_(' '), indentCharCount_(4) {}
64
+
65
+ #if RAPIDJSON_HAS_CXX11_RVALUE_REFS
66
+ PrettyWriter(PrettyWriter&& rhs) :
67
+ Base(std::forward<PrettyWriter>(rhs)), indentChar_(rhs.indentChar_), indentCharCount_(rhs.indentCharCount_), formatOptions_(rhs.formatOptions_) {}
68
+ #endif
69
+
70
+ //! Set custom indentation.
71
+ /*! \param indentChar Character for indentation. Must be whitespace character (' ', '\\t', '\\n', '\\r').
72
+ \param indentCharCount Number of indent characters for each indentation level.
73
+ \note The default indentation is 4 spaces.
74
+ */
75
+ PrettyWriter& SetIndent(Ch indentChar, unsigned indentCharCount) {
76
+ RAPIDJSON_ASSERT(indentChar == ' ' || indentChar == '\t' || indentChar == '\n' || indentChar == '\r');
77
+ indentChar_ = indentChar;
78
+ indentCharCount_ = indentCharCount;
79
+ return *this;
80
+ }
81
+
82
+ //! Set pretty writer formatting options.
83
+ /*! \param options Formatting options.
84
+ */
85
+ PrettyWriter& SetFormatOptions(PrettyFormatOptions options) {
86
+ formatOptions_ = options;
87
+ return *this;
88
+ }
89
+
90
+ /*! @name Implementation of Handler
91
+ \see Handler
92
+ */
93
+ //@{
94
+
95
+ bool Null() { PrettyPrefix(kNullType); return Base::WriteNull(); }
96
+ bool Bool(bool b) { PrettyPrefix(b ? kTrueType : kFalseType); return Base::WriteBool(b); }
97
+ bool Int(int i) { PrettyPrefix(kNumberType); return Base::WriteInt(i); }
98
+ bool Uint(unsigned u) { PrettyPrefix(kNumberType); return Base::WriteUint(u); }
99
+ bool Int64(int64_t i64) { PrettyPrefix(kNumberType); return Base::WriteInt64(i64); }
100
+ bool Uint64(uint64_t u64) { PrettyPrefix(kNumberType); return Base::WriteUint64(u64); }
101
+ bool Double(double d) { PrettyPrefix(kNumberType); return Base::WriteDouble(d); }
102
+
103
+ bool RawNumber(const Ch* str, SizeType length, bool copy = false) {
104
+ RAPIDJSON_ASSERT(str != 0);
105
+ (void)copy;
106
+ PrettyPrefix(kNumberType);
107
+ return Base::WriteString(str, length);
108
+ }
109
+
110
+ bool String(const Ch* str, SizeType length, bool copy = false) {
111
+ RAPIDJSON_ASSERT(str != 0);
112
+ (void)copy;
113
+ PrettyPrefix(kStringType);
114
+ return Base::WriteString(str, length);
115
+ }
116
+
117
+ #if RAPIDJSON_HAS_STDSTRING
118
+ bool String(const std::basic_string<Ch>& str) {
119
+ return String(str.data(), SizeType(str.size()));
120
+ }
121
+ #endif
122
+
123
+ bool StartObject() {
124
+ PrettyPrefix(kObjectType);
125
+ new (Base::level_stack_.template Push<typename Base::Level>()) typename Base::Level(false);
126
+ return Base::WriteStartObject();
127
+ }
128
+
129
+ bool Key(const Ch* str, SizeType length, bool copy = false) { return String(str, length, copy); }
130
+
131
+ #if RAPIDJSON_HAS_STDSTRING
132
+ bool Key(const std::basic_string<Ch>& str) {
133
+ return Key(str.data(), SizeType(str.size()));
134
+ }
135
+ #endif
136
+
137
+ bool EndObject(SizeType memberCount = 0) {
138
+ (void)memberCount;
139
+ RAPIDJSON_ASSERT(Base::level_stack_.GetSize() >= sizeof(typename Base::Level)); // not inside an Object
140
+ RAPIDJSON_ASSERT(!Base::level_stack_.template Top<typename Base::Level>()->inArray); // currently inside an Array, not Object
141
+ RAPIDJSON_ASSERT(0 == Base::level_stack_.template Top<typename Base::Level>()->valueCount % 2); // Object has a Key without a Value
142
+
143
+ bool empty = Base::level_stack_.template Pop<typename Base::Level>(1)->valueCount == 0;
144
+
145
+ if (!empty) {
146
+ Base::os_->Put('\n');
147
+ WriteIndent();
148
+ }
149
+ bool ret = Base::WriteEndObject();
150
+ (void)ret;
151
+ RAPIDJSON_ASSERT(ret == true);
152
+ if (Base::level_stack_.Empty()) // end of json text
153
+ Base::Flush();
154
+ return true;
155
+ }
156
+
157
+ bool StartArray() {
158
+ PrettyPrefix(kArrayType);
159
+ new (Base::level_stack_.template Push<typename Base::Level>()) typename Base::Level(true);
160
+ return Base::WriteStartArray();
161
+ }
162
+
163
+ bool EndArray(SizeType memberCount = 0) {
164
+ (void)memberCount;
165
+ RAPIDJSON_ASSERT(Base::level_stack_.GetSize() >= sizeof(typename Base::Level));
166
+ RAPIDJSON_ASSERT(Base::level_stack_.template Top<typename Base::Level>()->inArray);
167
+ bool empty = Base::level_stack_.template Pop<typename Base::Level>(1)->valueCount == 0;
168
+
169
+ if (!empty && !(formatOptions_ & kFormatSingleLineArray)) {
170
+ Base::os_->Put('\n');
171
+ WriteIndent();
172
+ }
173
+ bool ret = Base::WriteEndArray();
174
+ (void)ret;
175
+ RAPIDJSON_ASSERT(ret == true);
176
+ if (Base::level_stack_.Empty()) // end of json text
177
+ Base::Flush();
178
+ return true;
179
+ }
180
+
181
+ //@}
182
+
183
+ /*! @name Convenience extensions */
184
+ //@{
185
+
186
+ //! Simpler but slower overload.
187
+ bool String(const Ch* str) { return String(str, internal::StrLen(str)); }
188
+ bool Key(const Ch* str) { return Key(str, internal::StrLen(str)); }
189
+
190
+ //@}
191
+
192
+ //! Write a raw JSON value.
193
+ /*!
194
+ For user to write a stringified JSON as a value.
195
+
196
+ \param json A well-formed JSON value. It should not contain null character within [0, length - 1] range.
197
+ \param length Length of the json.
198
+ \param type Type of the root of json.
199
+ \note When using PrettyWriter::RawValue(), the result json may not be indented correctly.
200
+ */
201
+ bool RawValue(const Ch* json, size_t length, Type type) {
202
+ RAPIDJSON_ASSERT(json != 0);
203
+ PrettyPrefix(type);
204
+ return Base::WriteRawValue(json, length);
205
+ }
206
+
207
+ protected:
208
+ void PrettyPrefix(Type type) {
209
+ (void)type;
210
+ if (Base::level_stack_.GetSize() != 0) { // this value is not at root
211
+ typename Base::Level* level = Base::level_stack_.template Top<typename Base::Level>();
212
+
213
+ if (level->inArray) {
214
+ if (level->valueCount > 0) {
215
+ Base::os_->Put(','); // add comma if it is not the first element in array
216
+ if (formatOptions_ & kFormatSingleLineArray)
217
+ Base::os_->Put(' ');
218
+ }
219
+
220
+ if (!(formatOptions_ & kFormatSingleLineArray)) {
221
+ Base::os_->Put('\n');
222
+ WriteIndent();
223
+ }
224
+ }
225
+ else { // in object
226
+ if (level->valueCount > 0) {
227
+ if (level->valueCount % 2 == 0) {
228
+ Base::os_->Put(',');
229
+ Base::os_->Put('\n');
230
+ }
231
+ else {
232
+ Base::os_->Put(':');
233
+ Base::os_->Put(' ');
234
+ }
235
+ }
236
+ else
237
+ Base::os_->Put('\n');
238
+
239
+ if (level->valueCount % 2 == 0)
240
+ WriteIndent();
241
+ }
242
+ if (!level->inArray && level->valueCount % 2 == 0)
243
+ RAPIDJSON_ASSERT(type == kStringType); // if it's in object, then even number should be a name
244
+ level->valueCount++;
245
+ }
246
+ else {
247
+ RAPIDJSON_ASSERT(!Base::hasRoot_); // Should only has one and only one root.
248
+ Base::hasRoot_ = true;
249
+ }
250
+ }
251
+
252
+ void WriteIndent() {
253
+ size_t count = (Base::level_stack_.GetSize() / sizeof(typename Base::Level)) * indentCharCount_;
254
+ PutN(*Base::os_, static_cast<typename OutputStream::Ch>(indentChar_), count);
255
+ }
256
+
257
+ Ch indentChar_;
258
+ unsigned indentCharCount_;
259
+ PrettyFormatOptions formatOptions_;
260
+
261
+ private:
262
+ // Prohibit copy constructor & assignment operator.
263
+ PrettyWriter(const PrettyWriter&);
264
+ PrettyWriter& operator=(const PrettyWriter&);
265
+ };
266
+
267
+ RAPIDJSON_NAMESPACE_END
268
+
269
+ #if defined(__clang__)
270
+ RAPIDJSON_DIAG_POP
271
+ #endif
272
+
273
+ #ifdef __GNUC__
274
+ RAPIDJSON_DIAG_POP
275
+ #endif
276
+
277
+ #endif // RAPIDJSON_RAPIDJSON_H_
@@ -0,0 +1,628 @@
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 RAPIDJSON_RAPIDJSON_H_
16
+ #define RAPIDJSON_RAPIDJSON_H_
17
+
18
+ /*!\file rapidjson.h
19
+ \brief common definitions and configuration
20
+
21
+ \see RAPIDJSON_CONFIG
22
+ */
23
+
24
+ /*! \defgroup RAPIDJSON_CONFIG RapidJSON configuration
25
+ \brief Configuration macros for library features
26
+
27
+ Some RapidJSON features are configurable to adapt the library to a wide
28
+ variety of platforms, environments and usage scenarios. Most of the
29
+ features can be configured in terms of overriden or predefined
30
+ preprocessor macros at compile-time.
31
+
32
+ Some additional customization is available in the \ref RAPIDJSON_ERRORS APIs.
33
+
34
+ \note These macros should be given on the compiler command-line
35
+ (where applicable) to avoid inconsistent values when compiling
36
+ different translation units of a single application.
37
+ */
38
+
39
+ #include <cstdlib> // malloc(), realloc(), free(), size_t
40
+ #include <cstring> // memset(), memcpy(), memmove(), memcmp()
41
+
42
+ ///////////////////////////////////////////////////////////////////////////////
43
+ // RAPIDJSON_VERSION_STRING
44
+ //
45
+ // ALWAYS synchronize the following 3 macros with corresponding variables in /CMakeLists.txt.
46
+ //
47
+
48
+ //!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
49
+ // token stringification
50
+ #define RAPIDJSON_STRINGIFY(x) RAPIDJSON_DO_STRINGIFY(x)
51
+ #define RAPIDJSON_DO_STRINGIFY(x) #x
52
+
53
+ // token concatenation
54
+ #define RAPIDJSON_JOIN(X, Y) RAPIDJSON_DO_JOIN(X, Y)
55
+ #define RAPIDJSON_DO_JOIN(X, Y) RAPIDJSON_DO_JOIN2(X, Y)
56
+ #define RAPIDJSON_DO_JOIN2(X, Y) X##Y
57
+ //!@endcond
58
+
59
+ /*! \def RAPIDJSON_MAJOR_VERSION
60
+ \ingroup RAPIDJSON_CONFIG
61
+ \brief Major version of RapidJSON in integer.
62
+ */
63
+ /*! \def RAPIDJSON_MINOR_VERSION
64
+ \ingroup RAPIDJSON_CONFIG
65
+ \brief Minor version of RapidJSON in integer.
66
+ */
67
+ /*! \def RAPIDJSON_PATCH_VERSION
68
+ \ingroup RAPIDJSON_CONFIG
69
+ \brief Patch version of RapidJSON in integer.
70
+ */
71
+ /*! \def RAPIDJSON_VERSION_STRING
72
+ \ingroup RAPIDJSON_CONFIG
73
+ \brief Version of RapidJSON in "<major>.<minor>.<patch>" string format.
74
+ */
75
+ #define RAPIDJSON_MAJOR_VERSION 1
76
+ #define RAPIDJSON_MINOR_VERSION 1
77
+ #define RAPIDJSON_PATCH_VERSION 0
78
+ #define RAPIDJSON_VERSION_STRING \
79
+ RAPIDJSON_STRINGIFY(RAPIDJSON_MAJOR_VERSION.RAPIDJSON_MINOR_VERSION.RAPIDJSON_PATCH_VERSION)
80
+
81
+ ///////////////////////////////////////////////////////////////////////////////
82
+ // RAPIDJSON_NAMESPACE_(BEGIN|END)
83
+ /*! \def RAPIDJSON_NAMESPACE
84
+ \ingroup RAPIDJSON_CONFIG
85
+ \brief provide custom rapidjson namespace
86
+
87
+ In order to avoid symbol clashes and/or "One Definition Rule" errors
88
+ between multiple inclusions of (different versions of) RapidJSON in
89
+ a single binary, users can customize the name of the main RapidJSON
90
+ namespace.
91
+
92
+ In case of a single nesting level, defining \c RAPIDJSON_NAMESPACE
93
+ to a custom name (e.g. \c MyRapidJSON) is sufficient. If multiple
94
+ levels are needed, both \ref RAPIDJSON_NAMESPACE_BEGIN and \ref
95
+ RAPIDJSON_NAMESPACE_END need to be defined as well:
96
+
97
+ \code
98
+ // in some .cpp file
99
+ #define RAPIDJSON_NAMESPACE my::rapidjson
100
+ #define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapidjson {
101
+ #define RAPIDJSON_NAMESPACE_END } }
102
+ #include "rapidjson/..."
103
+ \endcode
104
+
105
+ \see rapidjson
106
+ */
107
+ /*! \def RAPIDJSON_NAMESPACE_BEGIN
108
+ \ingroup RAPIDJSON_CONFIG
109
+ \brief provide custom rapidjson namespace (opening expression)
110
+ \see RAPIDJSON_NAMESPACE
111
+ */
112
+ /*! \def RAPIDJSON_NAMESPACE_END
113
+ \ingroup RAPIDJSON_CONFIG
114
+ \brief provide custom rapidjson namespace (closing expression)
115
+ \see RAPIDJSON_NAMESPACE
116
+ */
117
+ #ifndef RAPIDJSON_NAMESPACE
118
+ #define RAPIDJSON_NAMESPACE rapidjson
119
+ #endif
120
+ #ifndef RAPIDJSON_NAMESPACE_BEGIN
121
+ #define RAPIDJSON_NAMESPACE_BEGIN namespace RAPIDJSON_NAMESPACE {
122
+ #endif
123
+ #ifndef RAPIDJSON_NAMESPACE_END
124
+ #define RAPIDJSON_NAMESPACE_END }
125
+ #endif
126
+
127
+ ///////////////////////////////////////////////////////////////////////////////
128
+ // RAPIDJSON_HAS_STDSTRING
129
+
130
+ #ifndef RAPIDJSON_HAS_STDSTRING
131
+ #ifdef RAPIDJSON_DOXYGEN_RUNNING
132
+ #define RAPIDJSON_HAS_STDSTRING 1 // force generation of documentation
133
+ #else
134
+ #define RAPIDJSON_HAS_STDSTRING 0 // no std::string support by default
135
+ #endif
136
+ /*! \def RAPIDJSON_HAS_STDSTRING
137
+ \ingroup RAPIDJSON_CONFIG
138
+ \brief Enable RapidJSON support for \c std::string
139
+
140
+ By defining this preprocessor symbol to \c 1, several convenience functions for using
141
+ \ref rapidjson::GenericValue with \c std::string are enabled, especially
142
+ for construction and comparison.
143
+
144
+ \hideinitializer
145
+ */
146
+ #endif // !defined(RAPIDJSON_HAS_STDSTRING)
147
+
148
+ #if RAPIDJSON_HAS_STDSTRING
149
+ #include <string>
150
+ #endif // RAPIDJSON_HAS_STDSTRING
151
+
152
+ ///////////////////////////////////////////////////////////////////////////////
153
+ // RAPIDJSON_NO_INT64DEFINE
154
+
155
+ /*! \def RAPIDJSON_NO_INT64DEFINE
156
+ \ingroup RAPIDJSON_CONFIG
157
+ \brief Use external 64-bit integer types.
158
+
159
+ RapidJSON requires the 64-bit integer types \c int64_t and \c uint64_t types
160
+ to be available at global scope.
161
+
162
+ If users have their own definition, define RAPIDJSON_NO_INT64DEFINE to
163
+ prevent RapidJSON from defining its own types.
164
+ */
165
+ #ifndef RAPIDJSON_NO_INT64DEFINE
166
+ //!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
167
+ #if defined(_MSC_VER) && (_MSC_VER < 1800) // Visual Studio 2013
168
+ #include "msinttypes/stdint.h"
169
+ #include "msinttypes/inttypes.h"
170
+ #else
171
+ // Other compilers should have this.
172
+ #include <stdint.h>
173
+ #include <inttypes.h>
174
+ #endif
175
+ //!@endcond
176
+ #ifdef RAPIDJSON_DOXYGEN_RUNNING
177
+ #define RAPIDJSON_NO_INT64DEFINE
178
+ #endif
179
+ #endif // RAPIDJSON_NO_INT64TYPEDEF
180
+
181
+ ///////////////////////////////////////////////////////////////////////////////
182
+ // RAPIDJSON_FORCEINLINE
183
+
184
+ #ifndef RAPIDJSON_FORCEINLINE
185
+ //!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
186
+ #if defined(_MSC_VER) && defined(NDEBUG)
187
+ #define RAPIDJSON_FORCEINLINE __forceinline
188
+ #elif defined(__GNUC__) && __GNUC__ >= 4 && defined(NDEBUG)
189
+ #define RAPIDJSON_FORCEINLINE __attribute__((always_inline))
190
+ #else
191
+ #define RAPIDJSON_FORCEINLINE
192
+ #endif
193
+ //!@endcond
194
+ #endif // RAPIDJSON_FORCEINLINE
195
+
196
+ ///////////////////////////////////////////////////////////////////////////////
197
+ // RAPIDJSON_ENDIAN
198
+ #define RAPIDJSON_LITTLEENDIAN 0 //!< Little endian machine
199
+ #define RAPIDJSON_BIGENDIAN 1 //!< Big endian machine
200
+
201
+ //! Endianness of the machine.
202
+ /*!
203
+ \def RAPIDJSON_ENDIAN
204
+ \ingroup RAPIDJSON_CONFIG
205
+
206
+ GCC 4.6 provided macro for detecting endianness of the target machine. But other
207
+ compilers may not have this. User can define RAPIDJSON_ENDIAN to either
208
+ \ref RAPIDJSON_LITTLEENDIAN or \ref RAPIDJSON_BIGENDIAN.
209
+
210
+ Default detection implemented with reference to
211
+ \li https://gcc.gnu.org/onlinedocs/gcc-4.6.0/cpp/Common-Predefined-Macros.html
212
+ \li http://www.boost.org/doc/libs/1_42_0/boost/detail/endian.hpp
213
+ */
214
+ #ifndef RAPIDJSON_ENDIAN
215
+ // Detect with GCC 4.6's macro
216
+ # ifdef __BYTE_ORDER__
217
+ # if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
218
+ # define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
219
+ # elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
220
+ # define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
221
+ # else
222
+ # error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN.
223
+ # endif // __BYTE_ORDER__
224
+ // Detect with GLIBC's endian.h
225
+ # elif defined(__GLIBC__)
226
+ # include <endian.h>
227
+ # if (__BYTE_ORDER == __LITTLE_ENDIAN)
228
+ # define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
229
+ # elif (__BYTE_ORDER == __BIG_ENDIAN)
230
+ # define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
231
+ # else
232
+ # error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN.
233
+ # endif // __GLIBC__
234
+ // Detect with _LITTLE_ENDIAN and _BIG_ENDIAN macro
235
+ # elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)
236
+ # define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
237
+ # elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)
238
+ # define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
239
+ // Detect with architecture macros
240
+ # elif defined(__sparc) || defined(__sparc__) || defined(_POWER) || defined(__powerpc__) || defined(__ppc__) || defined(__hpux) || defined(__hppa) || defined(_MIPSEB) || defined(_POWER) || defined(__s390__)
241
+ # define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
242
+ # 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__)
243
+ # define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
244
+ # elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64))
245
+ # define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
246
+ # elif defined(RAPIDJSON_DOXYGEN_RUNNING)
247
+ # define RAPIDJSON_ENDIAN
248
+ # else
249
+ # error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN.
250
+ # endif
251
+ #endif // RAPIDJSON_ENDIAN
252
+
253
+ ///////////////////////////////////////////////////////////////////////////////
254
+ // RAPIDJSON_64BIT
255
+
256
+ //! Whether using 64-bit architecture
257
+ #ifndef RAPIDJSON_64BIT
258
+ #if defined(__LP64__) || (defined(__x86_64__) && defined(__ILP32__)) || defined(_WIN64) || defined(__EMSCRIPTEN__)
259
+ #define RAPIDJSON_64BIT 1
260
+ #else
261
+ #define RAPIDJSON_64BIT 0
262
+ #endif
263
+ #endif // RAPIDJSON_64BIT
264
+
265
+ ///////////////////////////////////////////////////////////////////////////////
266
+ // RAPIDJSON_ALIGN
267
+
268
+ //! Data alignment of the machine.
269
+ /*! \ingroup RAPIDJSON_CONFIG
270
+ \param x pointer to align
271
+
272
+ Some machines require strict data alignment. Currently the default uses 4 bytes
273
+ alignment on 32-bit platforms and 8 bytes alignment for 64-bit platforms.
274
+ User can customize by defining the RAPIDJSON_ALIGN function macro.
275
+ */
276
+ #ifndef RAPIDJSON_ALIGN
277
+ #if RAPIDJSON_64BIT == 1
278
+ #define RAPIDJSON_ALIGN(x) (((x) + static_cast<uint64_t>(7u)) & ~static_cast<uint64_t>(7u))
279
+ #else
280
+ #define RAPIDJSON_ALIGN(x) (((x) + 3u) & ~3u)
281
+ #endif
282
+ #endif
283
+
284
+ ///////////////////////////////////////////////////////////////////////////////
285
+ // RAPIDJSON_UINT64_C2
286
+
287
+ //! Construct a 64-bit literal by a pair of 32-bit integer.
288
+ /*!
289
+ 64-bit literal with or without ULL suffix is prone to compiler warnings.
290
+ UINT64_C() is C macro which cause compilation problems.
291
+ Use this macro to define 64-bit constants by a pair of 32-bit integer.
292
+ */
293
+ #ifndef RAPIDJSON_UINT64_C2
294
+ #define RAPIDJSON_UINT64_C2(high32, low32) ((static_cast<uint64_t>(high32) << 32) | static_cast<uint64_t>(low32))
295
+ #endif
296
+
297
+ ///////////////////////////////////////////////////////////////////////////////
298
+ // RAPIDJSON_48BITPOINTER_OPTIMIZATION
299
+
300
+ //! Use only lower 48-bit address for some pointers.
301
+ /*!
302
+ \ingroup RAPIDJSON_CONFIG
303
+
304
+ This optimization uses the fact that current X86-64 architecture only implement lower 48-bit virtual address.
305
+ The higher 16-bit can be used for storing other data.
306
+ \c GenericValue uses this optimization to reduce its size form 24 bytes to 16 bytes in 64-bit architecture.
307
+ */
308
+ #ifndef RAPIDJSON_48BITPOINTER_OPTIMIZATION
309
+ #if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)
310
+ #define RAPIDJSON_48BITPOINTER_OPTIMIZATION 1
311
+ #else
312
+ #define RAPIDJSON_48BITPOINTER_OPTIMIZATION 0
313
+ #endif
314
+ #endif // RAPIDJSON_48BITPOINTER_OPTIMIZATION
315
+
316
+ #if RAPIDJSON_48BITPOINTER_OPTIMIZATION == 1
317
+ #if RAPIDJSON_64BIT != 1
318
+ #error RAPIDJSON_48BITPOINTER_OPTIMIZATION can only be set to 1 when RAPIDJSON_64BIT=1
319
+ #endif
320
+ #define RAPIDJSON_SETPOINTER(type, p, x) (p = reinterpret_cast<type *>((reinterpret_cast<uintptr_t>(p) & static_cast<uintptr_t>(RAPIDJSON_UINT64_C2(0xFFFF0000, 0x00000000))) | reinterpret_cast<uintptr_t>(reinterpret_cast<const void*>(x))))
321
+ #define RAPIDJSON_GETPOINTER(type, p) (reinterpret_cast<type *>(reinterpret_cast<uintptr_t>(p) & static_cast<uintptr_t>(RAPIDJSON_UINT64_C2(0x0000FFFF, 0xFFFFFFFF))))
322
+ #else
323
+ #define RAPIDJSON_SETPOINTER(type, p, x) (p = (x))
324
+ #define RAPIDJSON_GETPOINTER(type, p) (p)
325
+ #endif
326
+
327
+ ///////////////////////////////////////////////////////////////////////////////
328
+ // RAPIDJSON_SSE2/RAPIDJSON_SSE42/RAPIDJSON_NEON/RAPIDJSON_SIMD
329
+
330
+ /*! \def RAPIDJSON_SIMD
331
+ \ingroup RAPIDJSON_CONFIG
332
+ \brief Enable SSE2/SSE4.2/Neon optimization.
333
+
334
+ RapidJSON supports optimized implementations for some parsing operations
335
+ based on the SSE2, SSE4.2 or NEon SIMD extensions on modern Intel
336
+ or ARM compatible processors.
337
+
338
+ To enable these optimizations, three different symbols can be defined;
339
+ \code
340
+ // Enable SSE2 optimization.
341
+ #define RAPIDJSON_SSE2
342
+
343
+ // Enable SSE4.2 optimization.
344
+ #define RAPIDJSON_SSE42
345
+ \endcode
346
+
347
+ // Enable ARM Neon optimization.
348
+ #define RAPIDJSON_NEON
349
+ \endcode
350
+
351
+ \c RAPIDJSON_SSE42 takes precedence over SSE2, if both are defined.
352
+
353
+ If any of these symbols is defined, RapidJSON defines the macro
354
+ \c RAPIDJSON_SIMD to indicate the availability of the optimized code.
355
+ */
356
+ #if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) \
357
+ || defined(RAPIDJSON_NEON) || defined(RAPIDJSON_DOXYGEN_RUNNING)
358
+ #define RAPIDJSON_SIMD
359
+ #endif
360
+
361
+ ///////////////////////////////////////////////////////////////////////////////
362
+ // RAPIDJSON_NO_SIZETYPEDEFINE
363
+
364
+ #ifndef RAPIDJSON_NO_SIZETYPEDEFINE
365
+ /*! \def RAPIDJSON_NO_SIZETYPEDEFINE
366
+ \ingroup RAPIDJSON_CONFIG
367
+ \brief User-provided \c SizeType definition.
368
+
369
+ In order to avoid using 32-bit size types for indexing strings and arrays,
370
+ define this preprocessor symbol and provide the type rapidjson::SizeType
371
+ before including RapidJSON:
372
+ \code
373
+ #define RAPIDJSON_NO_SIZETYPEDEFINE
374
+ namespace rapidjson { typedef ::std::size_t SizeType; }
375
+ #include "rapidjson/..."
376
+ \endcode
377
+
378
+ \see rapidjson::SizeType
379
+ */
380
+ #ifdef RAPIDJSON_DOXYGEN_RUNNING
381
+ #define RAPIDJSON_NO_SIZETYPEDEFINE
382
+ #endif
383
+ RAPIDJSON_NAMESPACE_BEGIN
384
+ //! Size type (for string lengths, array sizes, etc.)
385
+ /*! RapidJSON uses 32-bit array/string indices even on 64-bit platforms,
386
+ instead of using \c size_t. Users may override the SizeType by defining
387
+ \ref RAPIDJSON_NO_SIZETYPEDEFINE.
388
+ */
389
+ typedef unsigned SizeType;
390
+ RAPIDJSON_NAMESPACE_END
391
+ #endif
392
+
393
+ // always import std::size_t to rapidjson namespace
394
+ RAPIDJSON_NAMESPACE_BEGIN
395
+ using std::size_t;
396
+ RAPIDJSON_NAMESPACE_END
397
+
398
+ ///////////////////////////////////////////////////////////////////////////////
399
+ // RAPIDJSON_ASSERT
400
+
401
+ //! Assertion.
402
+ /*! \ingroup RAPIDJSON_CONFIG
403
+ By default, rapidjson uses C \c assert() for internal assertions.
404
+ User can override it by defining RAPIDJSON_ASSERT(x) macro.
405
+
406
+ \note Parsing errors are handled and can be customized by the
407
+ \ref RAPIDJSON_ERRORS APIs.
408
+ */
409
+ #ifndef RAPIDJSON_ASSERT
410
+ #include <cassert>
411
+ #define RAPIDJSON_ASSERT(x) assert(x)
412
+ #endif // RAPIDJSON_ASSERT
413
+
414
+ ///////////////////////////////////////////////////////////////////////////////
415
+ // RAPIDJSON_STATIC_ASSERT
416
+
417
+ // Prefer C++11 static_assert, if available
418
+ #ifndef RAPIDJSON_STATIC_ASSERT
419
+ #if __cplusplus >= 201103L || ( defined(_MSC_VER) && _MSC_VER >= 1800 )
420
+ #define RAPIDJSON_STATIC_ASSERT(x) \
421
+ static_assert(x, RAPIDJSON_STRINGIFY(x))
422
+ #endif // C++11
423
+ #endif // RAPIDJSON_STATIC_ASSERT
424
+
425
+ // Adopt C++03 implementation from boost
426
+ #ifndef RAPIDJSON_STATIC_ASSERT
427
+ #ifndef __clang__
428
+ //!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
429
+ #endif
430
+ RAPIDJSON_NAMESPACE_BEGIN
431
+ template <bool x> struct STATIC_ASSERTION_FAILURE;
432
+ template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
433
+ template <size_t x> struct StaticAssertTest {};
434
+ RAPIDJSON_NAMESPACE_END
435
+
436
+ #if defined(__GNUC__)
437
+ #define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
438
+ #else
439
+ #define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE
440
+ #endif
441
+ #ifndef __clang__
442
+ //!@endcond
443
+ #endif
444
+
445
+ /*! \def RAPIDJSON_STATIC_ASSERT
446
+ \brief (Internal) macro to check for conditions at compile-time
447
+ \param x compile-time condition
448
+ \hideinitializer
449
+ */
450
+ #define RAPIDJSON_STATIC_ASSERT(x) \
451
+ typedef ::RAPIDJSON_NAMESPACE::StaticAssertTest< \
452
+ sizeof(::RAPIDJSON_NAMESPACE::STATIC_ASSERTION_FAILURE<bool(x) >)> \
453
+ RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE
454
+ #endif // RAPIDJSON_STATIC_ASSERT
455
+
456
+ ///////////////////////////////////////////////////////////////////////////////
457
+ // RAPIDJSON_LIKELY, RAPIDJSON_UNLIKELY
458
+
459
+ //! Compiler branching hint for expression with high probability to be true.
460
+ /*!
461
+ \ingroup RAPIDJSON_CONFIG
462
+ \param x Boolean expression likely to be true.
463
+ */
464
+ #ifndef RAPIDJSON_LIKELY
465
+ #if defined(__GNUC__) || defined(__clang__)
466
+ #define RAPIDJSON_LIKELY(x) __builtin_expect(!!(x), 1)
467
+ #else
468
+ #define RAPIDJSON_LIKELY(x) (x)
469
+ #endif
470
+ #endif
471
+
472
+ //! Compiler branching hint for expression with low probability to be true.
473
+ /*!
474
+ \ingroup RAPIDJSON_CONFIG
475
+ \param x Boolean expression unlikely to be true.
476
+ */
477
+ #ifndef RAPIDJSON_UNLIKELY
478
+ #if defined(__GNUC__) || defined(__clang__)
479
+ #define RAPIDJSON_UNLIKELY(x) __builtin_expect(!!(x), 0)
480
+ #else
481
+ #define RAPIDJSON_UNLIKELY(x) (x)
482
+ #endif
483
+ #endif
484
+
485
+ ///////////////////////////////////////////////////////////////////////////////
486
+ // Helpers
487
+
488
+ //!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
489
+
490
+ #define RAPIDJSON_MULTILINEMACRO_BEGIN do {
491
+ #define RAPIDJSON_MULTILINEMACRO_END \
492
+ } while((void)0, 0)
493
+
494
+ // adopted from Boost
495
+ #define RAPIDJSON_VERSION_CODE(x,y,z) \
496
+ (((x)*100000) + ((y)*100) + (z))
497
+
498
+ ///////////////////////////////////////////////////////////////////////////////
499
+ // RAPIDJSON_DIAG_PUSH/POP, RAPIDJSON_DIAG_OFF
500
+
501
+ #if defined(__GNUC__)
502
+ #define RAPIDJSON_GNUC \
503
+ RAPIDJSON_VERSION_CODE(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)
504
+ #endif
505
+
506
+ #if defined(__clang__) || (defined(RAPIDJSON_GNUC) && RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,2,0))
507
+
508
+ #define RAPIDJSON_PRAGMA(x) _Pragma(RAPIDJSON_STRINGIFY(x))
509
+ #define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(GCC diagnostic x)
510
+ #define RAPIDJSON_DIAG_OFF(x) \
511
+ RAPIDJSON_DIAG_PRAGMA(ignored RAPIDJSON_STRINGIFY(RAPIDJSON_JOIN(-W,x)))
512
+
513
+ // push/pop support in Clang and GCC>=4.6
514
+ #if defined(__clang__) || (defined(RAPIDJSON_GNUC) && RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0))
515
+ #define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push)
516
+ #define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop)
517
+ #else // GCC >= 4.2, < 4.6
518
+ #define RAPIDJSON_DIAG_PUSH /* ignored */
519
+ #define RAPIDJSON_DIAG_POP /* ignored */
520
+ #endif
521
+
522
+ #elif defined(_MSC_VER)
523
+
524
+ // pragma (MSVC specific)
525
+ #define RAPIDJSON_PRAGMA(x) __pragma(x)
526
+ #define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(warning(x))
527
+
528
+ #define RAPIDJSON_DIAG_OFF(x) RAPIDJSON_DIAG_PRAGMA(disable: x)
529
+ #define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push)
530
+ #define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop)
531
+
532
+ #else
533
+
534
+ #define RAPIDJSON_DIAG_OFF(x) /* ignored */
535
+ #define RAPIDJSON_DIAG_PUSH /* ignored */
536
+ #define RAPIDJSON_DIAG_POP /* ignored */
537
+
538
+ #endif // RAPIDJSON_DIAG_*
539
+
540
+ ///////////////////////////////////////////////////////////////////////////////
541
+ // C++11 features
542
+
543
+ #ifndef RAPIDJSON_HAS_CXX11_RVALUE_REFS
544
+ #if defined(__clang__)
545
+ #if __has_feature(cxx_rvalue_references) && \
546
+ (defined(_LIBCPP_VERSION) || defined(__GLIBCXX__) && __GLIBCXX__ >= 20080306)
547
+ #define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1
548
+ #else
549
+ #define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0
550
+ #endif
551
+ #elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,3,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
552
+ (defined(_MSC_VER) && _MSC_VER >= 1600)
553
+
554
+ #define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1
555
+ #else
556
+ #define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0
557
+ #endif
558
+ #endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
559
+
560
+ #ifndef RAPIDJSON_HAS_CXX11_NOEXCEPT
561
+ #if defined(__clang__)
562
+ #define RAPIDJSON_HAS_CXX11_NOEXCEPT __has_feature(cxx_noexcept)
563
+ #elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__))
564
+ // (defined(_MSC_VER) && _MSC_VER >= ????) // not yet supported
565
+ #define RAPIDJSON_HAS_CXX11_NOEXCEPT 1
566
+ #else
567
+ #define RAPIDJSON_HAS_CXX11_NOEXCEPT 0
568
+ #endif
569
+ #endif
570
+ #if RAPIDJSON_HAS_CXX11_NOEXCEPT
571
+ #define RAPIDJSON_NOEXCEPT noexcept
572
+ #else
573
+ #define RAPIDJSON_NOEXCEPT /* noexcept */
574
+ #endif // RAPIDJSON_HAS_CXX11_NOEXCEPT
575
+
576
+ // no automatic detection, yet
577
+ #ifndef RAPIDJSON_HAS_CXX11_TYPETRAITS
578
+ #define RAPIDJSON_HAS_CXX11_TYPETRAITS 0
579
+ #endif
580
+
581
+ #ifndef RAPIDJSON_HAS_CXX11_RANGE_FOR
582
+ #if defined(__clang__)
583
+ #define RAPIDJSON_HAS_CXX11_RANGE_FOR __has_feature(cxx_range_for)
584
+ #elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
585
+ (defined(_MSC_VER) && _MSC_VER >= 1700)
586
+ #define RAPIDJSON_HAS_CXX11_RANGE_FOR 1
587
+ #else
588
+ #define RAPIDJSON_HAS_CXX11_RANGE_FOR 0
589
+ #endif
590
+ #endif // RAPIDJSON_HAS_CXX11_RANGE_FOR
591
+
592
+ //!@endcond
593
+
594
+ ///////////////////////////////////////////////////////////////////////////////
595
+ // new/delete
596
+
597
+ #ifndef RAPIDJSON_NEW
598
+ ///! customization point for global \c new
599
+ #define RAPIDJSON_NEW(TypeName) new TypeName
600
+ #endif
601
+ #ifndef RAPIDJSON_DELETE
602
+ ///! customization point for global \c delete
603
+ #define RAPIDJSON_DELETE(x) delete x
604
+ #endif
605
+
606
+ ///////////////////////////////////////////////////////////////////////////////
607
+ // Type
608
+
609
+ /*! \namespace rapidjson
610
+ \brief main RapidJSON namespace
611
+ \see RAPIDJSON_NAMESPACE
612
+ */
613
+ RAPIDJSON_NAMESPACE_BEGIN
614
+
615
+ //! Type of JSON value
616
+ enum Type {
617
+ kNullType = 0, //!< null
618
+ kFalseType = 1, //!< false
619
+ kTrueType = 2, //!< true
620
+ kObjectType = 3, //!< object
621
+ kArrayType = 4, //!< array
622
+ kStringType = 5, //!< string
623
+ kNumberType = 6 //!< number
624
+ };
625
+
626
+ RAPIDJSON_NAMESPACE_END
627
+
628
+ #endif // RAPIDJSON_RAPIDJSON_H_