ctags.rb 1.0.0 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (323) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +2 -1
  3. data/README.md +49 -0
  4. data/Rakefile +19 -0
  5. data/bench.rb +28 -0
  6. data/ctags.rb.gemspec +1 -1
  7. data/ext/.gitignore +1 -1
  8. data/ext/extconf.rb +30 -6
  9. data/ext/vendor/exuberant-ctags/entry.c +70 -1
  10. data/ext/vendor/exuberant-ctags/main.c +68 -7
  11. data/ext/vendor/exuberant-ctags/options.c +12 -12
  12. data/ext/vendor/exuberant-ctags/options.h +1 -1
  13. data/ext/vendor/exuberant-ctags/parse.c +2 -2
  14. data/ext/vendor/exuberant-ctags/read.c +8 -3
  15. data/ext/vendor/exuberant-ctags/read.h +4 -1
  16. data/ext/vendor/exuberant-ctags/routines.c +31 -8
  17. data/ext/vendor/exuberant-ctags/ruby.c +62 -7
  18. data/ext/vendor/fmemopen/README.md +49 -0
  19. data/ext/vendor/fmemopen/fmemopen.c +92 -0
  20. data/ext/vendor/fmemopen/fmemopen.h +52 -0
  21. data/ext/vendor/jansson-2.5/CHANGES +554 -0
  22. data/ext/vendor/jansson-2.5/LICENSE +19 -0
  23. data/ext/vendor/jansson-2.5/Makefile.am +15 -0
  24. data/ext/vendor/jansson-2.5/Makefile.in +825 -0
  25. data/ext/vendor/jansson-2.5/README.rst +63 -0
  26. data/ext/vendor/jansson-2.5/aclocal.m4 +9674 -0
  27. data/ext/vendor/jansson-2.5/config.guess +1530 -0
  28. data/ext/vendor/jansson-2.5/config.h.in +84 -0
  29. data/ext/vendor/jansson-2.5/config.sub +1782 -0
  30. data/ext/vendor/jansson-2.5/configure +13931 -0
  31. data/ext/vendor/jansson-2.5/configure.ac +57 -0
  32. data/ext/vendor/jansson-2.5/depcomp +708 -0
  33. data/ext/vendor/jansson-2.5/doc/Makefile.am +20 -0
  34. data/ext/vendor/jansson-2.5/doc/Makefile.in +401 -0
  35. data/ext/vendor/jansson-2.5/doc/README +5 -0
  36. data/ext/vendor/jansson-2.5/doc/apiref.rst +1487 -0
  37. data/ext/vendor/jansson-2.5/doc/changes.rst +5 -0
  38. data/ext/vendor/jansson-2.5/doc/conf.py +217 -0
  39. data/ext/vendor/jansson-2.5/doc/conformance.rst +114 -0
  40. data/ext/vendor/jansson-2.5/doc/ext/refcounting.py +59 -0
  41. data/ext/vendor/jansson-2.5/doc/gettingstarted.rst +237 -0
  42. data/ext/vendor/jansson-2.5/doc/github_commits.c +192 -0
  43. data/ext/vendor/jansson-2.5/doc/index.rst +53 -0
  44. data/ext/vendor/jansson-2.5/doc/portability.rst +52 -0
  45. data/ext/vendor/jansson-2.5/doc/tutorial.rst +286 -0
  46. data/ext/vendor/jansson-2.5/doc/upgrading.rst +76 -0
  47. data/ext/vendor/jansson-2.5/install-sh +527 -0
  48. data/ext/vendor/jansson-2.5/jansson.pc.in +10 -0
  49. data/ext/vendor/jansson-2.5/ltmain.sh +9661 -0
  50. data/ext/vendor/jansson-2.5/missing +331 -0
  51. data/ext/vendor/jansson-2.5/src/Makefile.am +24 -0
  52. data/ext/vendor/jansson-2.5/src/Makefile.in +613 -0
  53. data/ext/vendor/jansson-2.5/src/dump.c +456 -0
  54. data/ext/vendor/jansson-2.5/src/error.c +63 -0
  55. data/ext/vendor/jansson-2.5/src/hashtable.c +360 -0
  56. data/ext/vendor/jansson-2.5/src/hashtable.h +180 -0
  57. data/ext/vendor/jansson-2.5/src/jansson.def +63 -0
  58. data/ext/vendor/jansson-2.5/src/jansson.h +281 -0
  59. data/ext/vendor/jansson-2.5/src/jansson_config.h +39 -0
  60. data/ext/vendor/jansson-2.5/src/jansson_config.h.in +39 -0
  61. data/ext/vendor/jansson-2.5/src/jansson_private.h +93 -0
  62. data/ext/vendor/jansson-2.5/src/load.c +1077 -0
  63. data/ext/vendor/jansson-2.5/src/memory.c +56 -0
  64. data/ext/vendor/jansson-2.5/src/pack_unpack.c +762 -0
  65. data/ext/vendor/jansson-2.5/src/strbuffer.c +116 -0
  66. data/ext/vendor/jansson-2.5/src/strbuffer.h +33 -0
  67. data/ext/vendor/jansson-2.5/src/strconv.c +134 -0
  68. data/ext/vendor/jansson-2.5/src/utf.c +190 -0
  69. data/ext/vendor/jansson-2.5/src/utf.h +39 -0
  70. data/ext/vendor/jansson-2.5/src/value.c +950 -0
  71. data/ext/vendor/jansson-2.5/test/Makefile.am +10 -0
  72. data/ext/vendor/jansson-2.5/test/Makefile.in +684 -0
  73. data/ext/vendor/jansson-2.5/test/bin/Makefile.am +5 -0
  74. data/ext/vendor/jansson-2.5/test/bin/Makefile.in +498 -0
  75. data/ext/vendor/jansson-2.5/test/bin/json_process.c +349 -0
  76. data/ext/vendor/jansson-2.5/test/run-suites +50 -0
  77. data/ext/vendor/jansson-2.5/test/scripts/run-tests.sh +100 -0
  78. data/ext/vendor/jansson-2.5/test/scripts/valgrind.sh +35 -0
  79. data/ext/vendor/jansson-2.5/test/suites/Makefile.am +2 -0
  80. data/ext/vendor/jansson-2.5/test/suites/Makefile.in +580 -0
  81. data/ext/vendor/jansson-2.5/test/suites/api/Makefile.am +34 -0
  82. data/ext/vendor/jansson-2.5/test/suites/api/Makefile.in +632 -0
  83. data/ext/vendor/jansson-2.5/test/suites/api/check-exports +23 -0
  84. data/ext/vendor/jansson-2.5/test/suites/api/run +36 -0
  85. data/ext/vendor/jansson-2.5/test/suites/api/test_array.c +432 -0
  86. data/ext/vendor/jansson-2.5/test/suites/api/test_copy.c +318 -0
  87. data/ext/vendor/jansson-2.5/test/suites/api/test_dump.c +190 -0
  88. data/ext/vendor/jansson-2.5/test/suites/api/test_dump_callback.c +81 -0
  89. data/ext/vendor/jansson-2.5/test/suites/api/test_equal.c +189 -0
  90. data/ext/vendor/jansson-2.5/test/suites/api/test_load.c +166 -0
  91. data/ext/vendor/jansson-2.5/test/suites/api/test_load_callback.c +75 -0
  92. data/ext/vendor/jansson-2.5/test/suites/api/test_loadb.c +36 -0
  93. data/ext/vendor/jansson-2.5/test/suites/api/test_memory_funcs.c +82 -0
  94. data/ext/vendor/jansson-2.5/test/suites/api/test_number.c +73 -0
  95. data/ext/vendor/jansson-2.5/test/suites/api/test_object.c +511 -0
  96. data/ext/vendor/jansson-2.5/test/suites/api/test_pack.c +283 -0
  97. data/ext/vendor/jansson-2.5/test/suites/api/test_simple.c +199 -0
  98. data/ext/vendor/jansson-2.5/test/suites/api/test_unpack.c +373 -0
  99. data/ext/vendor/jansson-2.5/test/suites/api/util.h +74 -0
  100. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/encoded-surrogate-half/error +2 -0
  101. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/encoded-surrogate-half/input +1 -0
  102. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-after-backslash/error +2 -0
  103. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-after-backslash/input +1 -0
  104. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-array/error +2 -0
  105. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-array/input +1 -0
  106. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-bigger-int/error +2 -0
  107. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-bigger-int/input +1 -0
  108. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-escape/error +2 -0
  109. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-escape/input +1 -0
  110. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-exponent/error +2 -0
  111. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-exponent/input +1 -0
  112. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-identifier/error +2 -0
  113. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-identifier/input +1 -0
  114. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-int/error +2 -0
  115. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-int/input +1 -0
  116. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-real-after-e/error +2 -0
  117. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-real-after-e/input +1 -0
  118. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-string/error +2 -0
  119. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/invalid-utf-8-in-string/input +1 -0
  120. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/lone-invalid-utf-8/error +2 -0
  121. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/lone-invalid-utf-8/input +1 -0
  122. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/lone-utf-8-continuation-byte/error +2 -0
  123. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/lone-utf-8-continuation-byte/input +1 -0
  124. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/not-in-unicode-range/error +2 -0
  125. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/not-in-unicode-range/input +1 -0
  126. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-3-byte-encoding/error +2 -0
  127. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-3-byte-encoding/input +1 -0
  128. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-4-byte-encoding/error +2 -0
  129. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-4-byte-encoding/input +1 -0
  130. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-ascii-encoding/error +2 -0
  131. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/overlong-ascii-encoding/input +1 -0
  132. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/restricted-utf-8/error +2 -0
  133. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/restricted-utf-8/input +1 -0
  134. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/run +27 -0
  135. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/truncated-utf-8/error +2 -0
  136. data/ext/vendor/jansson-2.5/test/suites/invalid-unicode/truncated-utf-8/input +1 -0
  137. data/ext/vendor/jansson-2.5/test/suites/invalid/apostrophe/error +2 -0
  138. data/ext/vendor/jansson-2.5/test/suites/invalid/apostrophe/input +1 -0
  139. data/ext/vendor/jansson-2.5/test/suites/invalid/ascii-unicode-identifier/error +2 -0
  140. data/ext/vendor/jansson-2.5/test/suites/invalid/ascii-unicode-identifier/input +1 -0
  141. data/ext/vendor/jansson-2.5/test/suites/invalid/brace-comma/error +2 -0
  142. data/ext/vendor/jansson-2.5/test/suites/invalid/brace-comma/input +1 -0
  143. data/ext/vendor/jansson-2.5/test/suites/invalid/bracket-comma/error +2 -0
  144. data/ext/vendor/jansson-2.5/test/suites/invalid/bracket-comma/input +1 -0
  145. data/ext/vendor/jansson-2.5/test/suites/invalid/bracket-one-comma/error.normal +2 -0
  146. data/ext/vendor/jansson-2.5/test/suites/invalid/bracket-one-comma/error.strip +2 -0
  147. data/ext/vendor/jansson-2.5/test/suites/invalid/bracket-one-comma/input +1 -0
  148. data/ext/vendor/jansson-2.5/test/suites/invalid/empty/error +2 -0
  149. data/ext/vendor/jansson-2.5/test/suites/invalid/empty/input +0 -0
  150. data/ext/vendor/jansson-2.5/test/suites/invalid/escaped-null-byte-in-string/error +2 -0
  151. data/ext/vendor/jansson-2.5/test/suites/invalid/escaped-null-byte-in-string/input +1 -0
  152. data/ext/vendor/jansson-2.5/test/suites/invalid/extra-comma-in-array/error +2 -0
  153. data/ext/vendor/jansson-2.5/test/suites/invalid/extra-comma-in-array/input +1 -0
  154. data/ext/vendor/jansson-2.5/test/suites/invalid/extra-comma-in-multiline-array/error +2 -0
  155. data/ext/vendor/jansson-2.5/test/suites/invalid/extra-comma-in-multiline-array/input +6 -0
  156. data/ext/vendor/jansson-2.5/test/suites/invalid/garbage-after-newline/error +2 -0
  157. data/ext/vendor/jansson-2.5/test/suites/invalid/garbage-after-newline/input +2 -0
  158. data/ext/vendor/jansson-2.5/test/suites/invalid/garbage-at-the-end/error +2 -0
  159. data/ext/vendor/jansson-2.5/test/suites/invalid/garbage-at-the-end/input +1 -0
  160. data/ext/vendor/jansson-2.5/test/suites/invalid/integer-starting-with-zero/error +2 -0
  161. data/ext/vendor/jansson-2.5/test/suites/invalid/integer-starting-with-zero/input +1 -0
  162. data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-escape/error +2 -0
  163. data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-escape/input +1 -0
  164. data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-identifier/error +2 -0
  165. data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-identifier/input +1 -0
  166. data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-negative-integer/error +2 -0
  167. data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-negative-integer/input +1 -0
  168. data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-negative-real/error +2 -0
  169. data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-negative-real/input +1 -0
  170. data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-second-surrogate/error +2 -0
  171. data/ext/vendor/jansson-2.5/test/suites/invalid/invalid-second-surrogate/input +1 -0
  172. data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-brace/error.normal +2 -0
  173. data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-brace/error.strip +2 -0
  174. data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-brace/input +1 -0
  175. data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-bracket/error.normal +2 -0
  176. data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-bracket/error.strip +2 -0
  177. data/ext/vendor/jansson-2.5/test/suites/invalid/lone-open-bracket/input +1 -0
  178. data/ext/vendor/jansson-2.5/test/suites/invalid/lone-second-surrogate/error +2 -0
  179. data/ext/vendor/jansson-2.5/test/suites/invalid/lone-second-surrogate/input +1 -0
  180. data/ext/vendor/jansson-2.5/test/suites/invalid/minus-sign-without-number/error +2 -0
  181. data/ext/vendor/jansson-2.5/test/suites/invalid/minus-sign-without-number/input +1 -0
  182. data/ext/vendor/jansson-2.5/test/suites/invalid/negative-integer-starting-with-zero/error +2 -0
  183. data/ext/vendor/jansson-2.5/test/suites/invalid/negative-integer-starting-with-zero/input +1 -0
  184. data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-in-string/error +2 -0
  185. data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-in-string/input +0 -0
  186. data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-in-string/nostrip +2 -0
  187. data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-outside-string/error +2 -0
  188. data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-outside-string/input +0 -0
  189. data/ext/vendor/jansson-2.5/test/suites/invalid/null-byte-outside-string/nostrip +2 -0
  190. data/ext/vendor/jansson-2.5/test/suites/invalid/null/error +2 -0
  191. data/ext/vendor/jansson-2.5/test/suites/invalid/null/input +1 -0
  192. data/ext/vendor/jansson-2.5/test/suites/invalid/object-apostrophes/error +2 -0
  193. data/ext/vendor/jansson-2.5/test/suites/invalid/object-apostrophes/input +1 -0
  194. data/ext/vendor/jansson-2.5/test/suites/invalid/object-garbage-at-end/error +2 -0
  195. data/ext/vendor/jansson-2.5/test/suites/invalid/object-garbage-at-end/input +1 -0
  196. data/ext/vendor/jansson-2.5/test/suites/invalid/object-in-unterminated-array/error.normal +2 -0
  197. data/ext/vendor/jansson-2.5/test/suites/invalid/object-in-unterminated-array/error.strip +2 -0
  198. data/ext/vendor/jansson-2.5/test/suites/invalid/object-in-unterminated-array/input +1 -0
  199. data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-colon/error.normal +2 -0
  200. data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-colon/error.strip +2 -0
  201. data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-colon/input +1 -0
  202. data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-value/error.normal +2 -0
  203. data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-value/error.strip +2 -0
  204. data/ext/vendor/jansson-2.5/test/suites/invalid/object-no-value/input +1 -0
  205. data/ext/vendor/jansson-2.5/test/suites/invalid/object-unterminated-value/error.normal +2 -0
  206. data/ext/vendor/jansson-2.5/test/suites/invalid/object-unterminated-value/error.strip +2 -0
  207. data/ext/vendor/jansson-2.5/test/suites/invalid/object-unterminated-value/input +1 -0
  208. data/ext/vendor/jansson-2.5/test/suites/invalid/real-garbage-after-e/error +2 -0
  209. data/ext/vendor/jansson-2.5/test/suites/invalid/real-garbage-after-e/input +1 -0
  210. data/ext/vendor/jansson-2.5/test/suites/invalid/real-negative-overflow/error +2 -0
  211. data/ext/vendor/jansson-2.5/test/suites/invalid/real-negative-overflow/input +1 -0
  212. data/ext/vendor/jansson-2.5/test/suites/invalid/real-positive-overflow/error +2 -0
  213. data/ext/vendor/jansson-2.5/test/suites/invalid/real-positive-overflow/input +1 -0
  214. data/ext/vendor/jansson-2.5/test/suites/invalid/real-truncated-at-e/error +2 -0
  215. data/ext/vendor/jansson-2.5/test/suites/invalid/real-truncated-at-e/input +1 -0
  216. data/ext/vendor/jansson-2.5/test/suites/invalid/real-truncated-at-point/error +2 -0
  217. data/ext/vendor/jansson-2.5/test/suites/invalid/real-truncated-at-point/input +1 -0
  218. data/ext/vendor/jansson-2.5/test/suites/invalid/run +57 -0
  219. data/ext/vendor/jansson-2.5/test/suites/invalid/tab-character-in-string/error +2 -0
  220. data/ext/vendor/jansson-2.5/test/suites/invalid/tab-character-in-string/input +1 -0
  221. data/ext/vendor/jansson-2.5/test/suites/invalid/too-big-negative-integer/error +2 -0
  222. data/ext/vendor/jansson-2.5/test/suites/invalid/too-big-negative-integer/input +1 -0
  223. data/ext/vendor/jansson-2.5/test/suites/invalid/too-big-positive-integer/error +2 -0
  224. data/ext/vendor/jansson-2.5/test/suites/invalid/too-big-positive-integer/input +1 -0
  225. data/ext/vendor/jansson-2.5/test/suites/invalid/truncated-unicode-surrogate/error +2 -0
  226. data/ext/vendor/jansson-2.5/test/suites/invalid/truncated-unicode-surrogate/input +1 -0
  227. data/ext/vendor/jansson-2.5/test/suites/invalid/unicode-identifier/error +2 -0
  228. data/ext/vendor/jansson-2.5/test/suites/invalid/unicode-identifier/input +1 -0
  229. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array-and-object/error.normal +2 -0
  230. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array-and-object/error.strip +2 -0
  231. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array-and-object/input +1 -0
  232. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array/error.normal +2 -0
  233. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array/error.strip +2 -0
  234. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-array/input +1 -0
  235. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-empty-key/error.normal +2 -0
  236. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-empty-key/error.strip +2 -0
  237. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-empty-key/input +1 -0
  238. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-key/error.normal +2 -0
  239. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-key/error.strip +2 -0
  240. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-key/input +1 -0
  241. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-object-and-array/error +2 -0
  242. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-object-and-array/input +1 -0
  243. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-string/error.normal +2 -0
  244. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-string/error.strip +2 -0
  245. data/ext/vendor/jansson-2.5/test/suites/invalid/unterminated-string/input +1 -0
  246. data/ext/vendor/jansson-2.5/test/suites/valid/complex-array/env +1 -0
  247. data/ext/vendor/jansson-2.5/test/suites/valid/complex-array/input +5 -0
  248. data/ext/vendor/jansson-2.5/test/suites/valid/complex-array/output +1 -0
  249. data/ext/vendor/jansson-2.5/test/suites/valid/empty-array/input +1 -0
  250. data/ext/vendor/jansson-2.5/test/suites/valid/empty-array/output +1 -0
  251. data/ext/vendor/jansson-2.5/test/suites/valid/empty-object-in-array/input +1 -0
  252. data/ext/vendor/jansson-2.5/test/suites/valid/empty-object-in-array/output +1 -0
  253. data/ext/vendor/jansson-2.5/test/suites/valid/empty-object/input +1 -0
  254. data/ext/vendor/jansson-2.5/test/suites/valid/empty-object/output +1 -0
  255. data/ext/vendor/jansson-2.5/test/suites/valid/empty-string/input +1 -0
  256. data/ext/vendor/jansson-2.5/test/suites/valid/empty-string/output +1 -0
  257. data/ext/vendor/jansson-2.5/test/suites/valid/escaped-utf-control-char/input +1 -0
  258. data/ext/vendor/jansson-2.5/test/suites/valid/escaped-utf-control-char/output +1 -0
  259. data/ext/vendor/jansson-2.5/test/suites/valid/false/input +1 -0
  260. data/ext/vendor/jansson-2.5/test/suites/valid/false/output +1 -0
  261. data/ext/vendor/jansson-2.5/test/suites/valid/negative-int/input +1 -0
  262. data/ext/vendor/jansson-2.5/test/suites/valid/negative-int/output +1 -0
  263. data/ext/vendor/jansson-2.5/test/suites/valid/negative-one/input +1 -0
  264. data/ext/vendor/jansson-2.5/test/suites/valid/negative-one/output +1 -0
  265. data/ext/vendor/jansson-2.5/test/suites/valid/negative-zero/input +1 -0
  266. data/ext/vendor/jansson-2.5/test/suites/valid/negative-zero/output +1 -0
  267. data/ext/vendor/jansson-2.5/test/suites/valid/null/input +1 -0
  268. data/ext/vendor/jansson-2.5/test/suites/valid/null/output +1 -0
  269. data/ext/vendor/jansson-2.5/test/suites/valid/one-byte-utf-8/input +1 -0
  270. data/ext/vendor/jansson-2.5/test/suites/valid/one-byte-utf-8/output +1 -0
  271. data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e-negative-exponent/input +1 -0
  272. data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e-negative-exponent/output +1 -0
  273. data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e-positive-exponent/input +1 -0
  274. data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e-positive-exponent/output +1 -0
  275. data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e/input +1 -0
  276. data/ext/vendor/jansson-2.5/test/suites/valid/real-capital-e/output +1 -0
  277. data/ext/vendor/jansson-2.5/test/suites/valid/real-exponent/input +1 -0
  278. data/ext/vendor/jansson-2.5/test/suites/valid/real-exponent/output +1 -0
  279. data/ext/vendor/jansson-2.5/test/suites/valid/real-fraction-exponent/input +1 -0
  280. data/ext/vendor/jansson-2.5/test/suites/valid/real-fraction-exponent/output +1 -0
  281. data/ext/vendor/jansson-2.5/test/suites/valid/real-negative-exponent/input +1 -0
  282. data/ext/vendor/jansson-2.5/test/suites/valid/real-negative-exponent/output +1 -0
  283. data/ext/vendor/jansson-2.5/test/suites/valid/real-positive-exponent/input +1 -0
  284. data/ext/vendor/jansson-2.5/test/suites/valid/real-positive-exponent/output +1 -0
  285. data/ext/vendor/jansson-2.5/test/suites/valid/real-underflow/input +1 -0
  286. data/ext/vendor/jansson-2.5/test/suites/valid/real-underflow/output +1 -0
  287. data/ext/vendor/jansson-2.5/test/suites/valid/run +56 -0
  288. data/ext/vendor/jansson-2.5/test/suites/valid/short-string/input +1 -0
  289. data/ext/vendor/jansson-2.5/test/suites/valid/short-string/output +1 -0
  290. data/ext/vendor/jansson-2.5/test/suites/valid/simple-ascii-string/input +1 -0
  291. data/ext/vendor/jansson-2.5/test/suites/valid/simple-ascii-string/output +1 -0
  292. data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-0/input +1 -0
  293. data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-0/output +1 -0
  294. data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-1/input +1 -0
  295. data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-1/output +1 -0
  296. data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-123/input +1 -0
  297. data/ext/vendor/jansson-2.5/test/suites/valid/simple-int-123/output +1 -0
  298. data/ext/vendor/jansson-2.5/test/suites/valid/simple-object/input +1 -0
  299. data/ext/vendor/jansson-2.5/test/suites/valid/simple-object/output +1 -0
  300. data/ext/vendor/jansson-2.5/test/suites/valid/simple-real/input +1 -0
  301. data/ext/vendor/jansson-2.5/test/suites/valid/simple-real/output +1 -0
  302. data/ext/vendor/jansson-2.5/test/suites/valid/string-escapes/input +1 -0
  303. data/ext/vendor/jansson-2.5/test/suites/valid/string-escapes/output +1 -0
  304. data/ext/vendor/jansson-2.5/test/suites/valid/three-byte-utf-8/input +1 -0
  305. data/ext/vendor/jansson-2.5/test/suites/valid/three-byte-utf-8/output +1 -0
  306. data/ext/vendor/jansson-2.5/test/suites/valid/true/input +1 -0
  307. data/ext/vendor/jansson-2.5/test/suites/valid/true/output +1 -0
  308. data/ext/vendor/jansson-2.5/test/suites/valid/two-byte-utf-8/input +1 -0
  309. data/ext/vendor/jansson-2.5/test/suites/valid/two-byte-utf-8/output +1 -0
  310. data/ext/vendor/jansson-2.5/test/suites/valid/utf-8-string/input +1 -0
  311. data/ext/vendor/jansson-2.5/test/suites/valid/utf-8-string/output +1 -0
  312. data/ext/vendor/jansson-2.5/test/suites/valid/utf-surrogate-four-byte-encoding/input +1 -0
  313. data/ext/vendor/jansson-2.5/test/suites/valid/utf-surrogate-four-byte-encoding/output +1 -0
  314. data/ext/vendor/jansson-2.5/win32/jansson_config.h +39 -0
  315. data/ext/vendor/jansson-2.5/win32/vs2010/jansson.sln +20 -0
  316. data/ext/vendor/jansson-2.5/win32/vs2010/jansson.vcxproj +108 -0
  317. data/ext/vendor/jansson-2.5/win32/vs2010/jansson.vcxproj.filters +69 -0
  318. data/ext/vendor/jansson-2.5/win32/vs2010/jansson.vcxproj.user +3 -0
  319. data/lib/ctags.cnf +2 -0
  320. data/lib/ctags/exuberant.rb +129 -17
  321. data/lib/ctags/version.rb +1 -1
  322. data/test/test_ctags.rb +14 -7
  323. metadata +350 -69
@@ -0,0 +1,63 @@
1
+ EXPORTS
2
+ json_delete
3
+ json_true
4
+ json_false
5
+ json_null
6
+ json_string
7
+ json_string_nocheck
8
+ json_string_value
9
+ json_string_set
10
+ json_string_set_nocheck
11
+ json_integer
12
+ json_integer_value
13
+ json_integer_set
14
+ json_real
15
+ json_real_value
16
+ json_real_set
17
+ json_number_value
18
+ json_array
19
+ json_array_size
20
+ json_array_get
21
+ json_array_set_new
22
+ json_array_append_new
23
+ json_array_insert_new
24
+ json_array_remove
25
+ json_array_clear
26
+ json_array_extend
27
+ json_object
28
+ json_object_size
29
+ json_object_get
30
+ json_object_set_new
31
+ json_object_set_new_nocheck
32
+ json_object_del
33
+ json_object_clear
34
+ json_object_update
35
+ json_object_update_existing
36
+ json_object_update_missing
37
+ json_object_iter
38
+ json_object_iter_at
39
+ json_object_iter_next
40
+ json_object_iter_key
41
+ json_object_iter_value
42
+ json_object_iter_set_new
43
+ json_object_key_to_iter
44
+ json_dumps
45
+ json_dumpf
46
+ json_dump_file
47
+ json_dump_callback
48
+ json_loads
49
+ json_loadb
50
+ json_loadf
51
+ json_load_file
52
+ json_load_callback
53
+ json_equal
54
+ json_copy
55
+ json_deep_copy
56
+ json_pack
57
+ json_pack_ex
58
+ json_vpack_ex
59
+ json_unpack
60
+ json_unpack_ex
61
+ json_vunpack_ex
62
+ json_set_alloc_funcs
63
+
@@ -0,0 +1,281 @@
1
+ /*
2
+ * Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
3
+ *
4
+ * Jansson is free software; you can redistribute it and/or modify
5
+ * it under the terms of the MIT license. See LICENSE for details.
6
+ */
7
+
8
+ #ifndef JANSSON_H
9
+ #define JANSSON_H
10
+
11
+ #include <stdio.h>
12
+ #include <stdlib.h> /* for size_t */
13
+ #include <stdarg.h>
14
+
15
+ #include <jansson_config.h>
16
+
17
+ #ifdef __cplusplus
18
+ extern "C" {
19
+ #endif
20
+
21
+ /* version */
22
+
23
+ #define JANSSON_MAJOR_VERSION 2
24
+ #define JANSSON_MINOR_VERSION 5
25
+ #define JANSSON_MICRO_VERSION 0
26
+
27
+ /* Micro version is omitted if it's 0 */
28
+ #define JANSSON_VERSION "2.5"
29
+
30
+ /* Version as a 3-byte hex number, e.g. 0x010201 == 1.2.1. Use this
31
+ for numeric comparisons, e.g. #if JANSSON_VERSION_HEX >= ... */
32
+ #define JANSSON_VERSION_HEX ((JANSSON_MAJOR_VERSION << 16) | \
33
+ (JANSSON_MINOR_VERSION << 8) | \
34
+ (JANSSON_MICRO_VERSION << 0))
35
+
36
+
37
+ /* types */
38
+
39
+ typedef enum {
40
+ JSON_OBJECT,
41
+ JSON_ARRAY,
42
+ JSON_STRING,
43
+ JSON_INTEGER,
44
+ JSON_REAL,
45
+ JSON_TRUE,
46
+ JSON_FALSE,
47
+ JSON_NULL
48
+ } json_type;
49
+
50
+ typedef struct json_t {
51
+ json_type type;
52
+ size_t refcount;
53
+ } json_t;
54
+
55
+ #ifndef JANSSON_USING_CMAKE /* disabled if using cmake */
56
+ #if JSON_INTEGER_IS_LONG_LONG
57
+ #ifdef _WIN32
58
+ #define JSON_INTEGER_FORMAT "I64d"
59
+ #else
60
+ #define JSON_INTEGER_FORMAT "lld"
61
+ #endif
62
+ typedef long long json_int_t;
63
+ #else
64
+ #define JSON_INTEGER_FORMAT "ld"
65
+ typedef long json_int_t;
66
+ #endif /* JSON_INTEGER_IS_LONG_LONG */
67
+ #endif
68
+
69
+ #define json_typeof(json) ((json)->type)
70
+ #define json_is_object(json) (json && json_typeof(json) == JSON_OBJECT)
71
+ #define json_is_array(json) (json && json_typeof(json) == JSON_ARRAY)
72
+ #define json_is_string(json) (json && json_typeof(json) == JSON_STRING)
73
+ #define json_is_integer(json) (json && json_typeof(json) == JSON_INTEGER)
74
+ #define json_is_real(json) (json && json_typeof(json) == JSON_REAL)
75
+ #define json_is_number(json) (json_is_integer(json) || json_is_real(json))
76
+ #define json_is_true(json) (json && json_typeof(json) == JSON_TRUE)
77
+ #define json_is_false(json) (json && json_typeof(json) == JSON_FALSE)
78
+ #define json_is_boolean(json) (json_is_true(json) || json_is_false(json))
79
+ #define json_is_null(json) (json && json_typeof(json) == JSON_NULL)
80
+
81
+ /* construction, destruction, reference counting */
82
+
83
+ json_t *json_object(void);
84
+ json_t *json_array(void);
85
+ json_t *json_string(const char *value);
86
+ json_t *json_string_nocheck(const char *value);
87
+ json_t *json_integer(json_int_t value);
88
+ json_t *json_real(double value);
89
+ json_t *json_true(void);
90
+ json_t *json_false(void);
91
+ #define json_boolean(val) ((val) ? json_true() : json_false())
92
+ json_t *json_null(void);
93
+
94
+ static JSON_INLINE
95
+ json_t *json_incref(json_t *json)
96
+ {
97
+ if(json && json->refcount != (size_t)-1)
98
+ ++json->refcount;
99
+ return json;
100
+ }
101
+
102
+ /* do not call json_delete directly */
103
+ void json_delete(json_t *json);
104
+
105
+ static JSON_INLINE
106
+ void json_decref(json_t *json)
107
+ {
108
+ if(json && json->refcount != (size_t)-1 && --json->refcount == 0)
109
+ json_delete(json);
110
+ }
111
+
112
+
113
+ /* error reporting */
114
+
115
+ #define JSON_ERROR_TEXT_LENGTH 160
116
+ #define JSON_ERROR_SOURCE_LENGTH 80
117
+
118
+ typedef struct {
119
+ int line;
120
+ int column;
121
+ int position;
122
+ char source[JSON_ERROR_SOURCE_LENGTH];
123
+ char text[JSON_ERROR_TEXT_LENGTH];
124
+ } json_error_t;
125
+
126
+
127
+ /* getters, setters, manipulation */
128
+
129
+ size_t json_object_size(const json_t *object);
130
+ json_t *json_object_get(const json_t *object, const char *key);
131
+ int json_object_set_new(json_t *object, const char *key, json_t *value);
132
+ int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value);
133
+ int json_object_del(json_t *object, const char *key);
134
+ int json_object_clear(json_t *object);
135
+ int json_object_update(json_t *object, json_t *other);
136
+ int json_object_update_existing(json_t *object, json_t *other);
137
+ int json_object_update_missing(json_t *object, json_t *other);
138
+ void *json_object_iter(json_t *object);
139
+ void *json_object_iter_at(json_t *object, const char *key);
140
+ void *json_object_key_to_iter(const char *key);
141
+ void *json_object_iter_next(json_t *object, void *iter);
142
+ const char *json_object_iter_key(void *iter);
143
+ json_t *json_object_iter_value(void *iter);
144
+ int json_object_iter_set_new(json_t *object, void *iter, json_t *value);
145
+
146
+ #define json_object_foreach(object, key, value) \
147
+ for(key = json_object_iter_key(json_object_iter(object)); \
148
+ key && (value = json_object_iter_value(json_object_key_to_iter(key))); \
149
+ key = json_object_iter_key(json_object_iter_next(object, json_object_key_to_iter(key))))
150
+
151
+ #define json_array_foreach(array, index, value) \
152
+ for(index = 0; \
153
+ index < json_array_size(array) && (value = json_array_get(array, index)); \
154
+ index++)
155
+
156
+ static JSON_INLINE
157
+ int json_object_set(json_t *object, const char *key, json_t *value)
158
+ {
159
+ return json_object_set_new(object, key, json_incref(value));
160
+ }
161
+
162
+ static JSON_INLINE
163
+ int json_object_set_nocheck(json_t *object, const char *key, json_t *value)
164
+ {
165
+ return json_object_set_new_nocheck(object, key, json_incref(value));
166
+ }
167
+
168
+ static JSON_INLINE
169
+ int json_object_iter_set(json_t *object, void *iter, json_t *value)
170
+ {
171
+ return json_object_iter_set_new(object, iter, json_incref(value));
172
+ }
173
+
174
+ size_t json_array_size(const json_t *array);
175
+ json_t *json_array_get(const json_t *array, size_t index);
176
+ int json_array_set_new(json_t *array, size_t index, json_t *value);
177
+ int json_array_append_new(json_t *array, json_t *value);
178
+ int json_array_insert_new(json_t *array, size_t index, json_t *value);
179
+ int json_array_remove(json_t *array, size_t index);
180
+ int json_array_clear(json_t *array);
181
+ int json_array_extend(json_t *array, json_t *other);
182
+
183
+ static JSON_INLINE
184
+ int json_array_set(json_t *array, size_t ind, json_t *value)
185
+ {
186
+ return json_array_set_new(array, ind, json_incref(value));
187
+ }
188
+
189
+ static JSON_INLINE
190
+ int json_array_append(json_t *array, json_t *value)
191
+ {
192
+ return json_array_append_new(array, json_incref(value));
193
+ }
194
+
195
+ static JSON_INLINE
196
+ int json_array_insert(json_t *array, size_t ind, json_t *value)
197
+ {
198
+ return json_array_insert_new(array, ind, json_incref(value));
199
+ }
200
+
201
+ const char *json_string_value(const json_t *string);
202
+ json_int_t json_integer_value(const json_t *integer);
203
+ double json_real_value(const json_t *real);
204
+ double json_number_value(const json_t *json);
205
+
206
+ int json_string_set(json_t *string, const char *value);
207
+ int json_string_set_nocheck(json_t *string, const char *value);
208
+ int json_integer_set(json_t *integer, json_int_t value);
209
+ int json_real_set(json_t *real, double value);
210
+
211
+
212
+ /* pack, unpack */
213
+
214
+ json_t *json_pack(const char *fmt, ...);
215
+ json_t *json_pack_ex(json_error_t *error, size_t flags, const char *fmt, ...);
216
+ json_t *json_vpack_ex(json_error_t *error, size_t flags, const char *fmt, va_list ap);
217
+
218
+ #define JSON_VALIDATE_ONLY 0x1
219
+ #define JSON_STRICT 0x2
220
+
221
+ int json_unpack(json_t *root, const char *fmt, ...);
222
+ int json_unpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, ...);
223
+ int json_vunpack_ex(json_t *root, json_error_t *error, size_t flags, const char *fmt, va_list ap);
224
+
225
+
226
+ /* equality */
227
+
228
+ int json_equal(json_t *value1, json_t *value2);
229
+
230
+
231
+ /* copying */
232
+
233
+ json_t *json_copy(json_t *value);
234
+ json_t *json_deep_copy(const json_t *value);
235
+
236
+
237
+ /* decoding */
238
+
239
+ #define JSON_REJECT_DUPLICATES 0x1
240
+ #define JSON_DISABLE_EOF_CHECK 0x2
241
+ #define JSON_DECODE_ANY 0x4
242
+ #define JSON_DECODE_INT_AS_REAL 0x8
243
+
244
+ typedef size_t (*json_load_callback_t)(void *buffer, size_t buflen, void *data);
245
+
246
+ json_t *json_loads(const char *input, size_t flags, json_error_t *error);
247
+ json_t *json_loadb(const char *buffer, size_t buflen, size_t flags, json_error_t *error);
248
+ json_t *json_loadf(FILE *input, size_t flags, json_error_t *error);
249
+ json_t *json_load_file(const char *path, size_t flags, json_error_t *error);
250
+ json_t *json_load_callback(json_load_callback_t callback, void *data, size_t flags, json_error_t *error);
251
+
252
+
253
+ /* encoding */
254
+
255
+ #define JSON_INDENT(n) (n & 0x1F)
256
+ #define JSON_COMPACT 0x20
257
+ #define JSON_ENSURE_ASCII 0x40
258
+ #define JSON_SORT_KEYS 0x80
259
+ #define JSON_PRESERVE_ORDER 0x100
260
+ #define JSON_ENCODE_ANY 0x200
261
+ #define JSON_ESCAPE_SLASH 0x400
262
+
263
+ typedef int (*json_dump_callback_t)(const char *buffer, size_t size, void *data);
264
+
265
+ char *json_dumps(const json_t *json, size_t flags);
266
+ int json_dumpf(const json_t *json, FILE *output, size_t flags);
267
+ int json_dump_file(const json_t *json, const char *path, size_t flags);
268
+ int json_dump_callback(const json_t *json, json_dump_callback_t callback, void *data, size_t flags);
269
+
270
+ /* custom memory allocation */
271
+
272
+ typedef void *(*json_malloc_t)(size_t);
273
+ typedef void (*json_free_t)(void *);
274
+
275
+ void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn);
276
+
277
+ #ifdef __cplusplus
278
+ }
279
+ #endif
280
+
281
+ #endif
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Copyright (c) 2010-2013 Petri Lehtinen <petri@digip.org>
3
+ *
4
+ * Jansson is free software; you can redistribute it and/or modify
5
+ * it under the terms of the MIT license. See LICENSE for details.
6
+ *
7
+ *
8
+ * This file specifies a part of the site-specific configuration for
9
+ * Jansson, namely those things that affect the public API in
10
+ * jansson.h.
11
+ *
12
+ * The configure script copies this file to jansson_config.h and
13
+ * replaces @var@ substitutions by values that fit your system. If you
14
+ * cannot run the configure script, you can do the value substitution
15
+ * by hand.
16
+ */
17
+
18
+ #ifndef JANSSON_CONFIG_H
19
+ #define JANSSON_CONFIG_H
20
+
21
+ /* If your compiler supports the inline keyword in C, JSON_INLINE is
22
+ defined to `inline', otherwise empty. In C++, the inline is always
23
+ supported. */
24
+ #ifdef __cplusplus
25
+ #define JSON_INLINE inline
26
+ #else
27
+ #define JSON_INLINE inline
28
+ #endif
29
+
30
+ /* If your compiler supports the `long long` type and the strtoll()
31
+ library function, JSON_INTEGER_IS_LONG_LONG is defined to 1,
32
+ otherwise to 0. */
33
+ #define JSON_INTEGER_IS_LONG_LONG 1
34
+
35
+ /* If locale.h and localeconv() are available, define to 1,
36
+ otherwise to 0. */
37
+ #define JSON_HAVE_LOCALECONV 1
38
+
39
+ #endif
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Copyright (c) 2010-2013 Petri Lehtinen <petri@digip.org>
3
+ *
4
+ * Jansson is free software; you can redistribute it and/or modify
5
+ * it under the terms of the MIT license. See LICENSE for details.
6
+ *
7
+ *
8
+ * This file specifies a part of the site-specific configuration for
9
+ * Jansson, namely those things that affect the public API in
10
+ * jansson.h.
11
+ *
12
+ * The configure script copies this file to jansson_config.h and
13
+ * replaces @var@ substitutions by values that fit your system. If you
14
+ * cannot run the configure script, you can do the value substitution
15
+ * by hand.
16
+ */
17
+
18
+ #ifndef JANSSON_CONFIG_H
19
+ #define JANSSON_CONFIG_H
20
+
21
+ /* If your compiler supports the inline keyword in C, JSON_INLINE is
22
+ defined to `inline', otherwise empty. In C++, the inline is always
23
+ supported. */
24
+ #ifdef __cplusplus
25
+ #define JSON_INLINE inline
26
+ #else
27
+ #define JSON_INLINE @json_inline@
28
+ #endif
29
+
30
+ /* If your compiler supports the `long long` type and the strtoll()
31
+ library function, JSON_INTEGER_IS_LONG_LONG is defined to 1,
32
+ otherwise to 0. */
33
+ #define JSON_INTEGER_IS_LONG_LONG @json_have_long_long@
34
+
35
+ /* If locale.h and localeconv() are available, define to 1,
36
+ otherwise to 0. */
37
+ #define JSON_HAVE_LOCALECONV @json_have_localeconv@
38
+
39
+ #endif
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Copyright (c) 2009-2013 Petri Lehtinen <petri@digip.org>
3
+ *
4
+ * Jansson is free software; you can redistribute it and/or modify
5
+ * it under the terms of the MIT license. See LICENSE for details.
6
+ */
7
+
8
+ #ifndef JANSSON_PRIVATE_H
9
+ #define JANSSON_PRIVATE_H
10
+
11
+ #include <stddef.h>
12
+ #include "jansson.h"
13
+ #include "hashtable.h"
14
+ #include "strbuffer.h"
15
+
16
+ #define container_of(ptr_, type_, member_) \
17
+ ((type_ *)((char *)ptr_ - offsetof(type_, member_)))
18
+
19
+ /* On some platforms, max() may already be defined */
20
+ #ifndef max
21
+ #define max(a, b) ((a) > (b) ? (a) : (b))
22
+ #endif
23
+
24
+ /* va_copy is a C99 feature. In C89 implementations, it's sometimes
25
+ available as __va_copy. If not, memcpy() should do the trick. */
26
+ #ifndef va_copy
27
+ #ifdef __va_copy
28
+ #define va_copy __va_copy
29
+ #else
30
+ #define va_copy(a, b) memcpy(&(a), &(b), sizeof(va_list))
31
+ #endif
32
+ #endif
33
+
34
+ typedef struct {
35
+ json_t json;
36
+ hashtable_t hashtable;
37
+ size_t serial;
38
+ int visited;
39
+ } json_object_t;
40
+
41
+ typedef struct {
42
+ json_t json;
43
+ size_t size;
44
+ size_t entries;
45
+ json_t **table;
46
+ int visited;
47
+ } json_array_t;
48
+
49
+ typedef struct {
50
+ json_t json;
51
+ char *value;
52
+ } json_string_t;
53
+
54
+ typedef struct {
55
+ json_t json;
56
+ double value;
57
+ } json_real_t;
58
+
59
+ typedef struct {
60
+ json_t json;
61
+ json_int_t value;
62
+ } json_integer_t;
63
+
64
+ #define json_to_object(json_) container_of(json_, json_object_t, json)
65
+ #define json_to_array(json_) container_of(json_, json_array_t, json)
66
+ #define json_to_string(json_) container_of(json_, json_string_t, json)
67
+ #define json_to_real(json_) container_of(json_, json_real_t, json)
68
+ #define json_to_integer(json_) container_of(json_, json_integer_t, json)
69
+
70
+ void jsonp_error_init(json_error_t *error, const char *source);
71
+ void jsonp_error_set_source(json_error_t *error, const char *source);
72
+ void jsonp_error_set(json_error_t *error, int line, int column,
73
+ size_t position, const char *msg, ...);
74
+ void jsonp_error_vset(json_error_t *error, int line, int column,
75
+ size_t position, const char *msg, va_list ap);
76
+
77
+ /* Locale independent string<->double conversions */
78
+ int jsonp_strtod(strbuffer_t *strbuffer, double *out);
79
+ int jsonp_dtostr(char *buffer, size_t size, double value);
80
+
81
+ /* Wrappers for custom memory functions */
82
+ void* jsonp_malloc(size_t size);
83
+ void jsonp_free(void *ptr);
84
+ char *jsonp_strndup(const char *str, size_t length);
85
+ char *jsonp_strdup(const char *str);
86
+
87
+ /* Windows compatibility */
88
+ #ifdef _WIN32
89
+ #define snprintf _snprintf
90
+ #define vsnprintf _vsnprintf
91
+ #endif
92
+
93
+ #endif