debase-ruby_core_source 3.3.1 → 3.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (289) hide show
  1. checksums.yaml +4 -4
  2. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/addr2line.h +22 -0
  3. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/builtin.h +117 -0
  4. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ccan/build_assert/build_assert.h +40 -0
  5. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ccan/check_type/check_type.h +63 -0
  6. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ccan/container_of/container_of.h +142 -0
  7. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ccan/list/list.h +791 -0
  8. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ccan/str/str.h +17 -0
  9. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/constant.h +53 -0
  10. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/darray.h +246 -0
  11. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/debug_counter.h +423 -0
  12. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/dln.h +32 -0
  13. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/encindex.h +70 -0
  14. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/eval_intern.h +343 -0
  15. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/hrtime.h +227 -0
  16. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/id.h +343 -0
  17. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/id_table.h +39 -0
  18. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/insns.inc +251 -0
  19. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/insns_info.inc +9215 -0
  20. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/array.h +151 -0
  21. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/basic_operators.h +63 -0
  22. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/bignum.h +244 -0
  23. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/bits.h +568 -0
  24. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/class.h +277 -0
  25. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/cmdlineopt.h +65 -0
  26. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/compar.h +29 -0
  27. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/compile.h +34 -0
  28. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/compilers.h +107 -0
  29. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/complex.h +29 -0
  30. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/cont.h +35 -0
  31. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/dir.h +16 -0
  32. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/enc.h +19 -0
  33. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/encoding.h +35 -0
  34. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/enum.h +18 -0
  35. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/enumerator.h +21 -0
  36. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/error.h +216 -0
  37. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/eval.h +33 -0
  38. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/file.h +38 -0
  39. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/fixnum.h +184 -0
  40. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/gc.h +364 -0
  41. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/hash.h +191 -0
  42. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/imemo.h +240 -0
  43. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/inits.h +50 -0
  44. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/io.h +137 -0
  45. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/load.h +18 -0
  46. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/loadpath.h +16 -0
  47. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/math.h +23 -0
  48. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/missing.h +18 -0
  49. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/numeric.h +273 -0
  50. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/object.h +62 -0
  51. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/parse.h +108 -0
  52. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/proc.h +30 -0
  53. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/process.h +124 -0
  54. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/ractor.h +6 -0
  55. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/random.h +17 -0
  56. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/range.h +40 -0
  57. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/rational.h +71 -0
  58. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/re.h +28 -0
  59. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/ruby_parser.h +69 -0
  60. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/sanitizers.h +186 -0
  61. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/serial.h +23 -0
  62. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/signal.h +25 -0
  63. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/static_assert.h +16 -0
  64. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/string.h +160 -0
  65. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/struct.h +127 -0
  66. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/symbol.h +45 -0
  67. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/thread.h +78 -0
  68. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/time.h +34 -0
  69. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/transcode.h +23 -0
  70. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/util.h +27 -0
  71. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/variable.h +72 -0
  72. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/vm.h +136 -0
  73. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/warnings.h +16 -0
  74. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal.h +112 -0
  75. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/iseq.h +338 -0
  76. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/known_errors.inc +791 -0
  77. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/method.h +254 -0
  78. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/node.h +128 -0
  79. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/node_name.inc +212 -0
  80. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/optinsn.inc +128 -0
  81. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/optunifs.inc +43 -0
  82. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/parse.h +243 -0
  83. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/parser_bits.h +564 -0
  84. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/parser_node.h +32 -0
  85. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/parser_st.h +162 -0
  86. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/parser_value.h +106 -0
  87. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/ast.h +4612 -0
  88. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/defines.h +94 -0
  89. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/diagnostic.h +297 -0
  90. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/encoding.h +248 -0
  91. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/extension.h +18 -0
  92. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/node.h +57 -0
  93. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/options.h +204 -0
  94. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/pack.h +152 -0
  95. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/parser.h +716 -0
  96. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/prettyprint.h +26 -0
  97. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/prism.h +272 -0
  98. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/regexp.h +33 -0
  99. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_buffer.h +146 -0
  100. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_char.h +205 -0
  101. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_constant_pool.h +191 -0
  102. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_list.h +97 -0
  103. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_memchr.h +29 -0
  104. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_newline_list.h +104 -0
  105. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_state_stack.h +42 -0
  106. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_string.h +150 -0
  107. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_string_list.h +44 -0
  108. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_strncasecmp.h +32 -0
  109. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_strpbrk.h +43 -0
  110. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/version.h +29 -0
  111. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism_compile.h +29 -0
  112. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/probes_helper.h +42 -0
  113. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ractor_core.h +393 -0
  114. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/regenc.h +254 -0
  115. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/regint.h +1006 -0
  116. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/regparse.h +371 -0
  117. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/revision.h +5 -0
  118. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/rjit.h +101 -0
  119. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/rjit_c.h +164 -0
  120. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ruby_assert.h +14 -0
  121. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ruby_atomic.h +23 -0
  122. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/rubyparser.h +1405 -0
  123. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/shape.h +233 -0
  124. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/siphash.h +48 -0
  125. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/symbol.h +118 -0
  126. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/thread_none.h +21 -0
  127. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/thread_pthread.h +166 -0
  128. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/thread_win32.h +58 -0
  129. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/timev.h +58 -0
  130. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/transcode_data.h +138 -0
  131. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/variable.h +39 -0
  132. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/version.h +69 -0
  133. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm.inc +5436 -0
  134. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_call_iseq_optimized.inc +244 -0
  135. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_callinfo.h +614 -0
  136. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_core.h +2202 -0
  137. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_debug.h +122 -0
  138. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_exec.h +199 -0
  139. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_insnhelper.h +261 -0
  140. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_opts.h +67 -0
  141. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_sync.h +137 -0
  142. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vmtc.inc +245 -0
  143. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/yjit.h +72 -0
  144. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/addr2line.h +22 -0
  145. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/builtin.h +119 -0
  146. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ccan/build_assert/build_assert.h +40 -0
  147. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ccan/check_type/check_type.h +63 -0
  148. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ccan/container_of/container_of.h +142 -0
  149. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ccan/list/list.h +791 -0
  150. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ccan/str/str.h +17 -0
  151. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/constant.h +53 -0
  152. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/darray.h +191 -0
  153. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/debug_counter.h +423 -0
  154. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/dln.h +34 -0
  155. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/encindex.h +70 -0
  156. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/eval_intern.h +324 -0
  157. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/hrtime.h +237 -0
  158. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/id.h +343 -0
  159. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/id_table.h +39 -0
  160. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/insns.inc +259 -0
  161. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/insns_info.inc +9530 -0
  162. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/array.h +151 -0
  163. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/basic_operators.h +63 -0
  164. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/bignum.h +244 -0
  165. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/bits.h +568 -0
  166. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/class.h +283 -0
  167. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/cmdlineopt.h +65 -0
  168. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/compar.h +29 -0
  169. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/compile.h +34 -0
  170. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/compilers.h +107 -0
  171. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/complex.h +29 -0
  172. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/cont.h +35 -0
  173. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/dir.h +16 -0
  174. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/enc.h +19 -0
  175. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/encoding.h +36 -0
  176. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/enum.h +18 -0
  177. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/enumerator.h +21 -0
  178. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/error.h +216 -0
  179. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/eval.h +33 -0
  180. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/file.h +38 -0
  181. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/fixnum.h +184 -0
  182. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/gc.h +334 -0
  183. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/hash.h +191 -0
  184. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/imemo.h +260 -0
  185. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/inits.h +47 -0
  186. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/io.h +140 -0
  187. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/load.h +18 -0
  188. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/loadpath.h +16 -0
  189. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/math.h +23 -0
  190. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/missing.h +19 -0
  191. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/numeric.h +274 -0
  192. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/object.h +63 -0
  193. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/parse.h +117 -0
  194. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/proc.h +30 -0
  195. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/process.h +124 -0
  196. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/ractor.h +6 -0
  197. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/random.h +17 -0
  198. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/range.h +40 -0
  199. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/rational.h +71 -0
  200. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/re.h +28 -0
  201. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/ruby_parser.h +102 -0
  202. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/sanitizers.h +297 -0
  203. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/serial.h +23 -0
  204. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/signal.h +24 -0
  205. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/st.h +11 -0
  206. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/static_assert.h +16 -0
  207. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/string.h +182 -0
  208. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/struct.h +127 -0
  209. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/symbol.h +45 -0
  210. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/thread.h +79 -0
  211. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/time.h +34 -0
  212. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/transcode.h +23 -0
  213. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/util.h +27 -0
  214. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/variable.h +72 -0
  215. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/vm.h +137 -0
  216. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/warnings.h +16 -0
  217. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal.h +108 -0
  218. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/iseq.h +340 -0
  219. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/known_errors.inc +1419 -0
  220. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/method.h +255 -0
  221. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/node.h +111 -0
  222. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/node_name.inc +224 -0
  223. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/optinsn.inc +128 -0
  224. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/optunifs.inc +43 -0
  225. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/parse.h +243 -0
  226. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/parser_bits.h +564 -0
  227. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/parser_node.h +32 -0
  228. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/parser_st.h +162 -0
  229. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/parser_value.h +106 -0
  230. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/ast.h +6245 -0
  231. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/defines.h +206 -0
  232. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/diagnostic.h +433 -0
  233. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/encoding.h +283 -0
  234. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/extension.h +19 -0
  235. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/node.h +150 -0
  236. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/options.h +305 -0
  237. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/pack.h +163 -0
  238. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/parser.h +891 -0
  239. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/prettyprint.h +34 -0
  240. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/prism.h +347 -0
  241. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/regexp.h +33 -0
  242. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/static_literals.h +120 -0
  243. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_buffer.h +218 -0
  244. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_char.h +205 -0
  245. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_constant_pool.h +226 -0
  246. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_integer.h +119 -0
  247. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_list.h +97 -0
  248. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_memchr.h +29 -0
  249. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_newline_list.h +102 -0
  250. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_string.h +174 -0
  251. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_string_list.h +44 -0
  252. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_strncasecmp.h +32 -0
  253. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_strpbrk.h +46 -0
  254. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/version.h +29 -0
  255. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism_compile.h +88 -0
  256. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/probes_helper.h +42 -0
  257. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ractor_core.h +393 -0
  258. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/regenc.h +254 -0
  259. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/regint.h +1010 -0
  260. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/regparse.h +371 -0
  261. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/revision.h +5 -0
  262. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/rjit.h +101 -0
  263. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/rjit_c.h +165 -0
  264. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ruby_assert.h +14 -0
  265. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ruby_atomic.h +23 -0
  266. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/rubyparser.h +1430 -0
  267. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/shape.h +233 -0
  268. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/siphash.h +48 -0
  269. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/symbol.h +118 -0
  270. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/thread_none.h +21 -0
  271. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/thread_pthread.h +166 -0
  272. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/thread_win32.h +58 -0
  273. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/timev.h +58 -0
  274. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/transcode_data.h +138 -0
  275. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/variable.h +39 -0
  276. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/version.h +69 -0
  277. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm.inc +5643 -0
  278. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_call_iseq_optimized.inc +244 -0
  279. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_callinfo.h +605 -0
  280. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_core.h +2236 -0
  281. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_debug.h +124 -0
  282. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_exec.h +199 -0
  283. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_insnhelper.h +272 -0
  284. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_opts.h +67 -0
  285. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_sync.h +137 -0
  286. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vmtc.inc +253 -0
  287. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/yjit.h +79 -0
  288. data/lib/debase/ruby_core_source/version.rb +1 -1
  289. metadata +289 -3
@@ -0,0 +1,305 @@
1
+ /**
2
+ * @file options.h
3
+ *
4
+ * The options that can be passed to parsing.
5
+ */
6
+ #ifndef PRISM_OPTIONS_H
7
+ #define PRISM_OPTIONS_H
8
+
9
+ #include "prism/defines.h"
10
+ #include "prism/util/pm_string.h"
11
+
12
+ #include <stdbool.h>
13
+ #include <stddef.h>
14
+ #include <stdint.h>
15
+
16
+ /**
17
+ * String literals should be made frozen.
18
+ */
19
+ #define PM_OPTIONS_FROZEN_STRING_LITERAL_DISABLED ((int8_t) -1)
20
+
21
+ /**
22
+ * String literals may be frozen or mutable depending on the implementation
23
+ * default.
24
+ */
25
+ #define PM_OPTIONS_FROZEN_STRING_LITERAL_UNSET ((int8_t) 0)
26
+
27
+ /**
28
+ * String literals should be made mutable.
29
+ */
30
+ #define PM_OPTIONS_FROZEN_STRING_LITERAL_ENABLED ((int8_t) 1)
31
+
32
+ /**
33
+ * A scope of locals surrounding the code that is being parsed.
34
+ */
35
+ typedef struct pm_options_scope {
36
+ /** The number of locals in the scope. */
37
+ size_t locals_count;
38
+
39
+ /** The names of the locals in the scope. */
40
+ pm_string_t *locals;
41
+ } pm_options_scope_t;
42
+
43
+ /**
44
+ * The version of Ruby syntax that we should be parsing with. This is used to
45
+ * allow consumers to specify which behavior they want in case they need to
46
+ * parse in the same way as a specific version of CRuby would have.
47
+ */
48
+ typedef enum {
49
+ /** The current version of prism. */
50
+ PM_OPTIONS_VERSION_LATEST = 0,
51
+
52
+ /** The vendored version of prism in CRuby 3.3.x. */
53
+ PM_OPTIONS_VERSION_CRUBY_3_3 = 1
54
+ } pm_options_version_t;
55
+
56
+ /**
57
+ * The options that can be passed to the parser.
58
+ */
59
+ typedef struct {
60
+ /** The name of the file that is currently being parsed. */
61
+ pm_string_t filepath;
62
+
63
+ /**
64
+ * The line within the file that the parse starts on. This value is
65
+ * 1-indexed.
66
+ */
67
+ int32_t line;
68
+
69
+ /**
70
+ * The name of the encoding that the source file is in. Note that this must
71
+ * correspond to a name that can be found with Encoding.find in Ruby.
72
+ */
73
+ pm_string_t encoding;
74
+
75
+ /**
76
+ * The number of scopes surrounding the code that is being parsed.
77
+ */
78
+ size_t scopes_count;
79
+
80
+ /**
81
+ * The scopes surrounding the code that is being parsed. For most parses
82
+ * this will be NULL, but for evals it will be the locals that are in scope
83
+ * surrounding the eval. Scopes are ordered from the outermost scope to the
84
+ * innermost one.
85
+ */
86
+ pm_options_scope_t *scopes;
87
+
88
+ /**
89
+ * The version of prism that we should be parsing with. This is used to
90
+ * allow consumers to specify which behavior they want in case they need to
91
+ * parse exactly as a specific version of CRuby.
92
+ */
93
+ pm_options_version_t version;
94
+
95
+ /** A bitset of the various options that were set on the command line. */
96
+ uint8_t command_line;
97
+
98
+ /**
99
+ * Whether or not the frozen string literal option has been set.
100
+ * May be:
101
+ * - PM_OPTIONS_FROZEN_STRING_LITERAL_DISABLED
102
+ * - PM_OPTIONS_FROZEN_STRING_LITERAL_ENABLED
103
+ * - PM_OPTIONS_FROZEN_STRING_LITERAL_UNSET
104
+ */
105
+ int8_t frozen_string_literal;
106
+ } pm_options_t;
107
+
108
+ /**
109
+ * A bit representing whether or not the command line -a option was set. -a
110
+ * splits the input line $_ into $F.
111
+ */
112
+ static const uint8_t PM_OPTIONS_COMMAND_LINE_A = 0x1;
113
+
114
+ /**
115
+ * A bit representing whether or not the command line -e option was set. -e
116
+ * allow the user to specify a script to be executed. This is necessary for
117
+ * prism to know because certain warnings are not generated when -e is used.
118
+ */
119
+ static const uint8_t PM_OPTIONS_COMMAND_LINE_E = 0x2;
120
+
121
+ /**
122
+ * A bit representing whether or not the command line -l option was set. -l
123
+ * chomps the input line by default.
124
+ */
125
+ static const uint8_t PM_OPTIONS_COMMAND_LINE_L = 0x4;
126
+
127
+ /**
128
+ * A bit representing whether or not the command line -n option was set. -n
129
+ * wraps the script in a while gets loop.
130
+ */
131
+ static const uint8_t PM_OPTIONS_COMMAND_LINE_N = 0x8;
132
+
133
+ /**
134
+ * A bit representing whether or not the command line -p option was set. -p
135
+ * prints the value of $_ at the end of each loop.
136
+ */
137
+ static const uint8_t PM_OPTIONS_COMMAND_LINE_P = 0x10;
138
+
139
+ /**
140
+ * A bit representing whether or not the command line -x option was set. -x
141
+ * searches the input file for a shebang that matches the current Ruby engine.
142
+ */
143
+ static const uint8_t PM_OPTIONS_COMMAND_LINE_X = 0x20;
144
+
145
+ /**
146
+ * Set the filepath option on the given options struct.
147
+ *
148
+ * @param options The options struct to set the filepath on.
149
+ * @param filepath The filepath to set.
150
+ */
151
+ PRISM_EXPORTED_FUNCTION void pm_options_filepath_set(pm_options_t *options, const char *filepath);
152
+
153
+ /**
154
+ * Set the line option on the given options struct.
155
+ *
156
+ * @param options The options struct to set the line on.
157
+ * @param line The line to set.
158
+ */
159
+ PRISM_EXPORTED_FUNCTION void pm_options_line_set(pm_options_t *options, int32_t line);
160
+
161
+ /**
162
+ * Set the encoding option on the given options struct.
163
+ *
164
+ * @param options The options struct to set the encoding on.
165
+ * @param encoding The encoding to set.
166
+ */
167
+ PRISM_EXPORTED_FUNCTION void pm_options_encoding_set(pm_options_t *options, const char *encoding);
168
+
169
+ /**
170
+ * Set the frozen string literal option on the given options struct.
171
+ *
172
+ * @param options The options struct to set the frozen string literal value on.
173
+ * @param frozen_string_literal The frozen string literal value to set.
174
+ */
175
+ PRISM_EXPORTED_FUNCTION void pm_options_frozen_string_literal_set(pm_options_t *options, bool frozen_string_literal);
176
+
177
+ /**
178
+ * Sets the command line option on the given options struct.
179
+ *
180
+ * @param options The options struct to set the command line option on.
181
+ * @param command_line The command_line value to set.
182
+ */
183
+ PRISM_EXPORTED_FUNCTION void pm_options_command_line_set(pm_options_t *options, uint8_t command_line);
184
+
185
+ /**
186
+ * Set the version option on the given options struct by parsing the given
187
+ * string. If the string contains an invalid option, this returns false.
188
+ * Otherwise, it returns true.
189
+ *
190
+ * @param options The options struct to set the version on.
191
+ * @param version The version to set.
192
+ * @param length The length of the version string.
193
+ * @return Whether or not the version was parsed successfully.
194
+ */
195
+ PRISM_EXPORTED_FUNCTION bool pm_options_version_set(pm_options_t *options, const char *version, size_t length);
196
+
197
+ /**
198
+ * Allocate and zero out the scopes array on the given options struct.
199
+ *
200
+ * @param options The options struct to initialize the scopes array on.
201
+ * @param scopes_count The number of scopes to allocate.
202
+ * @return Whether or not the scopes array was initialized successfully.
203
+ */
204
+ PRISM_EXPORTED_FUNCTION bool pm_options_scopes_init(pm_options_t *options, size_t scopes_count);
205
+
206
+ /**
207
+ * Return a pointer to the scope at the given index within the given options.
208
+ *
209
+ * @param options The options struct to get the scope from.
210
+ * @param index The index of the scope to get.
211
+ * @return A pointer to the scope at the given index.
212
+ */
213
+ PRISM_EXPORTED_FUNCTION const pm_options_scope_t * pm_options_scope_get(const pm_options_t *options, size_t index);
214
+
215
+ /**
216
+ * Create a new options scope struct. This will hold a set of locals that are in
217
+ * scope surrounding the code that is being parsed.
218
+ *
219
+ * @param scope The scope struct to initialize.
220
+ * @param locals_count The number of locals to allocate.
221
+ * @return Whether or not the scope was initialized successfully.
222
+ */
223
+ PRISM_EXPORTED_FUNCTION bool pm_options_scope_init(pm_options_scope_t *scope, size_t locals_count);
224
+
225
+ /**
226
+ * Return a pointer to the local at the given index within the given scope.
227
+ *
228
+ * @param scope The scope struct to get the local from.
229
+ * @param index The index of the local to get.
230
+ * @return A pointer to the local at the given index.
231
+ */
232
+ PRISM_EXPORTED_FUNCTION const pm_string_t * pm_options_scope_local_get(const pm_options_scope_t *scope, size_t index);
233
+
234
+ /**
235
+ * Free the internal memory associated with the options.
236
+ *
237
+ * @param options The options struct whose internal memory should be freed.
238
+ */
239
+ PRISM_EXPORTED_FUNCTION void pm_options_free(pm_options_t *options);
240
+
241
+ /**
242
+ * Deserialize an options struct from the given binary string. This is used to
243
+ * pass options to the parser from an FFI call so that consumers of the library
244
+ * from an FFI perspective don't have to worry about the structure of our
245
+ * options structs. Since the source of these calls will be from Ruby
246
+ * implementation internals we assume it is from a trusted source.
247
+ *
248
+ * `data` is assumed to be a valid pointer pointing to well-formed data. The
249
+ * layout of this data should be the same every time, and is described below:
250
+ *
251
+ * | # bytes | field |
252
+ * | ------- | -------------------------- |
253
+ * | `4` | the length of the filepath |
254
+ * | ... | the filepath bytes |
255
+ * | `4` | the line number |
256
+ * | `4` | the length the encoding |
257
+ * | ... | the encoding bytes |
258
+ * | `1` | frozen string literal |
259
+ * | `1` | -p command line option |
260
+ * | `1` | -n command line option |
261
+ * | `1` | -l command line option |
262
+ * | `1` | -a command line option |
263
+ * | `1` | the version |
264
+ * | `4` | the number of scopes |
265
+ * | ... | the scopes |
266
+ *
267
+ * The version field is an enum, so it should be one of the following values:
268
+ *
269
+ * | value | version |
270
+ * | ----- | ------------------------- |
271
+ * | `0` | use the latest version of prism |
272
+ * | `1` | use the version of prism that is vendored in CRuby 3.3.0 |
273
+ *
274
+ * Each scope is laid out as follows:
275
+ *
276
+ * | # bytes | field |
277
+ * | ------- | -------------------------- |
278
+ * | `4` | the number of locals |
279
+ * | ... | the locals |
280
+ *
281
+ * Each local is laid out as follows:
282
+ *
283
+ * | # bytes | field |
284
+ * | ------- | -------------------------- |
285
+ * | `4` | the length of the local |
286
+ * | ... | the local bytes |
287
+ *
288
+ * Some additional things to note about this layout:
289
+ *
290
+ * * The filepath can have a length of 0, in which case we'll consider it an
291
+ * empty string.
292
+ * * The line number should be 0-indexed.
293
+ * * The encoding can have a length of 0, in which case we'll use the default
294
+ * encoding (UTF-8). If it's not 0, it should correspond to a name of an
295
+ * encoding that can be passed to `Encoding.find` in Ruby.
296
+ * * The frozen string literal and suppress warnings fields are booleans, so
297
+ * their values should be either 0 or 1.
298
+ * * The number of scopes can be 0.
299
+ *
300
+ * @param options The options struct to deserialize into.
301
+ * @param data The binary string to deserialize from.
302
+ */
303
+ void pm_options_read(pm_options_t *options, const char *data);
304
+
305
+ #endif
@@ -0,0 +1,163 @@
1
+ /**
2
+ * @file pack.h
3
+ *
4
+ * A pack template string parser.
5
+ */
6
+ #ifndef PRISM_PACK_H
7
+ #define PRISM_PACK_H
8
+
9
+ #include "prism/defines.h"
10
+
11
+ // We optionally support parsing String#pack templates. For systems that don't
12
+ // want or need this functionality, it can be turned off with the
13
+ // PRISM_EXCLUDE_PACK define.
14
+ #ifdef PRISM_EXCLUDE_PACK
15
+
16
+ void pm_pack_parse(void);
17
+
18
+ #else
19
+
20
+ #include <stdint.h>
21
+ #include <stdlib.h>
22
+
23
+ /** The version of the pack template language that we are parsing. */
24
+ typedef enum pm_pack_version {
25
+ PM_PACK_VERSION_3_2_0
26
+ } pm_pack_version;
27
+
28
+ /** The type of pack template we are parsing. */
29
+ typedef enum pm_pack_variant {
30
+ PM_PACK_VARIANT_PACK,
31
+ PM_PACK_VARIANT_UNPACK
32
+ } pm_pack_variant;
33
+
34
+ /** A directive within the pack template. */
35
+ typedef enum pm_pack_type {
36
+ PM_PACK_SPACE,
37
+ PM_PACK_COMMENT,
38
+ PM_PACK_INTEGER,
39
+ PM_PACK_UTF8,
40
+ PM_PACK_BER,
41
+ PM_PACK_FLOAT,
42
+ PM_PACK_STRING_SPACE_PADDED,
43
+ PM_PACK_STRING_NULL_PADDED,
44
+ PM_PACK_STRING_NULL_TERMINATED,
45
+ PM_PACK_STRING_MSB,
46
+ PM_PACK_STRING_LSB,
47
+ PM_PACK_STRING_HEX_HIGH,
48
+ PM_PACK_STRING_HEX_LOW,
49
+ PM_PACK_STRING_UU,
50
+ PM_PACK_STRING_MIME,
51
+ PM_PACK_STRING_BASE64,
52
+ PM_PACK_STRING_FIXED,
53
+ PM_PACK_STRING_POINTER,
54
+ PM_PACK_MOVE,
55
+ PM_PACK_BACK,
56
+ PM_PACK_NULL,
57
+ PM_PACK_END
58
+ } pm_pack_type;
59
+
60
+ /** The signness of a pack directive. */
61
+ typedef enum pm_pack_signed {
62
+ PM_PACK_UNSIGNED,
63
+ PM_PACK_SIGNED,
64
+ PM_PACK_SIGNED_NA
65
+ } pm_pack_signed;
66
+
67
+ /** The endianness of a pack directive. */
68
+ typedef enum pm_pack_endian {
69
+ PM_PACK_AGNOSTIC_ENDIAN,
70
+ PM_PACK_LITTLE_ENDIAN, // aka 'VAX', or 'V'
71
+ PM_PACK_BIG_ENDIAN, // aka 'network', or 'N'
72
+ PM_PACK_NATIVE_ENDIAN,
73
+ PM_PACK_ENDIAN_NA
74
+ } pm_pack_endian;
75
+
76
+ /** The size of an integer pack directive. */
77
+ typedef enum pm_pack_size {
78
+ PM_PACK_SIZE_SHORT,
79
+ PM_PACK_SIZE_INT,
80
+ PM_PACK_SIZE_LONG,
81
+ PM_PACK_SIZE_LONG_LONG,
82
+ PM_PACK_SIZE_8,
83
+ PM_PACK_SIZE_16,
84
+ PM_PACK_SIZE_32,
85
+ PM_PACK_SIZE_64,
86
+ PM_PACK_SIZE_P,
87
+ PM_PACK_SIZE_NA
88
+ } pm_pack_size;
89
+
90
+ /** The type of length of a pack directive. */
91
+ typedef enum pm_pack_length_type {
92
+ PM_PACK_LENGTH_FIXED,
93
+ PM_PACK_LENGTH_MAX,
94
+ PM_PACK_LENGTH_RELATIVE, // special case for unpack @*
95
+ PM_PACK_LENGTH_NA
96
+ } pm_pack_length_type;
97
+
98
+ /** The type of encoding for a pack template string. */
99
+ typedef enum pm_pack_encoding {
100
+ PM_PACK_ENCODING_START,
101
+ PM_PACK_ENCODING_ASCII_8BIT,
102
+ PM_PACK_ENCODING_US_ASCII,
103
+ PM_PACK_ENCODING_UTF_8
104
+ } pm_pack_encoding;
105
+
106
+ /** The result of parsing a pack template. */
107
+ typedef enum pm_pack_result {
108
+ PM_PACK_OK,
109
+ PM_PACK_ERROR_UNSUPPORTED_DIRECTIVE,
110
+ PM_PACK_ERROR_UNKNOWN_DIRECTIVE,
111
+ PM_PACK_ERROR_LENGTH_TOO_BIG,
112
+ PM_PACK_ERROR_BANG_NOT_ALLOWED,
113
+ PM_PACK_ERROR_DOUBLE_ENDIAN
114
+ } pm_pack_result;
115
+
116
+ /**
117
+ * Parse a single directive from a pack or unpack format string.
118
+ *
119
+ * @param variant (in) pack or unpack
120
+ * @param format (in, out) the start of the next directive to parse on calling,
121
+ * and advanced beyond the parsed directive on return, or as much of it as
122
+ * was consumed until an error was encountered
123
+ * @param format_end (in) the end of the format string
124
+ * @param type (out) the type of the directive
125
+ * @param signed_type (out) whether the value is signed
126
+ * @param endian (out) the endianness of the value
127
+ * @param size (out) the size of the value
128
+ * @param length_type (out) what kind of length is specified
129
+ * @param length (out) the length of the directive
130
+ * @param encoding (in, out) takes the current encoding of the string which
131
+ * would result from parsing the whole format string, and returns a possibly
132
+ * changed directive - the encoding should be `PM_PACK_ENCODING_START` when
133
+ * pm_pack_parse is called for the first directive in a format string
134
+ *
135
+ * @return `PM_PACK_OK` on success or `PM_PACK_ERROR_*` on error
136
+ * @note Consult Ruby documentation for the meaning of directives.
137
+ */
138
+ PRISM_EXPORTED_FUNCTION pm_pack_result
139
+ pm_pack_parse(
140
+ pm_pack_variant variant,
141
+ const char **format,
142
+ const char *format_end,
143
+ pm_pack_type *type,
144
+ pm_pack_signed *signed_type,
145
+ pm_pack_endian *endian,
146
+ pm_pack_size *size,
147
+ pm_pack_length_type *length_type,
148
+ uint64_t *length,
149
+ pm_pack_encoding *encoding
150
+ );
151
+
152
+ /**
153
+ * Prism abstracts sizes away from the native system - this converts an abstract
154
+ * size to a native size.
155
+ *
156
+ * @param size The abstract size to convert.
157
+ * @return The native size.
158
+ */
159
+ PRISM_EXPORTED_FUNCTION size_t pm_size_to_native(pm_pack_size size);
160
+
161
+ #endif
162
+
163
+ #endif