debase-ruby_core_source 4.0.1 → 4.1.0.preview1

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 (200) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/addr2line.h +22 -0
  4. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/builtin.h +127 -0
  5. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/build_assert/build_assert.h +40 -0
  6. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/check_type/check_type.h +63 -0
  7. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/container_of/container_of.h +142 -0
  8. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/list/list.h +791 -0
  9. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ccan/str/str.h +17 -0
  10. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/constant.h +53 -0
  11. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/darray.h +295 -0
  12. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/debug_counter.h +428 -0
  13. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/dln.h +33 -0
  14. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/encindex.h +70 -0
  15. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/eval_intern.h +356 -0
  16. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/hrtime.h +237 -0
  17. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/id.h +365 -0
  18. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/id_table.h +74 -0
  19. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/insns.inc +315 -0
  20. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/insns_info.inc +11637 -0
  21. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/array.h +158 -0
  22. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/basic_operators.h +67 -0
  23. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/bignum.h +249 -0
  24. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/bits.h +647 -0
  25. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/box.h +103 -0
  26. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/class.h +797 -0
  27. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/cmdlineopt.h +64 -0
  28. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compar.h +30 -0
  29. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compile.h +34 -0
  30. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/compilers.h +104 -0
  31. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/complex.h +29 -0
  32. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/concurrent_set.h +21 -0
  33. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/cont.h +33 -0
  34. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/coverage.h +51 -0
  35. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/dir.h +16 -0
  36. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enc.h +19 -0
  37. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/encoding.h +40 -0
  38. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enum.h +18 -0
  39. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/enumerator.h +21 -0
  40. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/error.h +287 -0
  41. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/eval.h +43 -0
  42. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/file.h +40 -0
  43. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/fixnum.h +185 -0
  44. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/gc.h +411 -0
  45. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/hash.h +220 -0
  46. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/imemo.h +302 -0
  47. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/inits.h +54 -0
  48. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/io.h +167 -0
  49. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/io_buffer.h +36 -0
  50. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/jit.h +23 -0
  51. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/load.h +20 -0
  52. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/loadpath.h +16 -0
  53. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/marshal.h +17 -0
  54. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/math.h +23 -0
  55. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/missing.h +19 -0
  56. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/numeric.h +326 -0
  57. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/object.h +88 -0
  58. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/objspace.h +24 -0
  59. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/parse.h +131 -0
  60. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/proc.h +34 -0
  61. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/process.h +124 -0
  62. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/ractor.h +9 -0
  63. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/random.h +17 -0
  64. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/range.h +46 -0
  65. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/rational.h +92 -0
  66. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/re.h +87 -0
  67. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/ruby_parser.h +109 -0
  68. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/sanitizers.h +346 -0
  69. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/scheduler.h +7 -0
  70. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/serial.h +23 -0
  71. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/set.h +20 -0
  72. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/set_table.h +77 -0
  73. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/signal.h +25 -0
  74. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/simd.h +18 -0
  75. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/st.h +32 -0
  76. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/static_assert.h +16 -0
  77. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/string.h +240 -0
  78. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/struct.h +120 -0
  79. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/symbol.h +46 -0
  80. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/thread.h +108 -0
  81. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/time.h +34 -0
  82. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/transcode.h +23 -0
  83. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/util.h +27 -0
  84. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/variable.h +81 -0
  85. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/vm.h +144 -0
  86. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/vm_map.h +95 -0
  87. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal/warnings.h +16 -0
  88. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/internal.h +106 -0
  89. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/iseq.h +439 -0
  90. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/known_errors.inc +1419 -0
  91. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/method.h +279 -0
  92. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/node.h +122 -0
  93. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/node_name.inc +224 -0
  94. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/optinsn.inc +128 -0
  95. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/optunifs.inc +41 -0
  96. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parse.h +246 -0
  97. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_bits.h +647 -0
  98. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_node.h +32 -0
  99. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_st.h +161 -0
  100. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/parser_value.h +116 -0
  101. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/arena.h +37 -0
  102. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/ast.h +10371 -0
  103. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/buffer.h +52 -0
  104. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/comments.h +43 -0
  105. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/accel.h +19 -0
  106. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/align.h +36 -0
  107. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/assume.h +25 -0
  108. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/exported.h +24 -0
  109. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/fallthrough.h +22 -0
  110. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/filesystem.h +32 -0
  111. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/flex_array.h +19 -0
  112. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/force_inline.h +21 -0
  113. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/format.h +25 -0
  114. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/inline.h +17 -0
  115. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/nodiscard.h +22 -0
  116. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/nonnull.h +18 -0
  117. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/compiler/unused.h +18 -0
  118. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/constant_pool.h +81 -0
  119. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/diagnostic.h +93 -0
  120. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/errors_format.h +53 -0
  121. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/excludes.h +29 -0
  122. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/extension.h +19 -0
  123. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/integer.h +41 -0
  124. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/allocator.h +68 -0
  125. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/allocator_debug.h +88 -0
  126. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/arena.h +108 -0
  127. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/bit.h +42 -0
  128. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/buffer.h +91 -0
  129. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/char.h +139 -0
  130. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/comments.h +20 -0
  131. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/constant_pool.h +152 -0
  132. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/diagnostic.h +389 -0
  133. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/encoding.h +242 -0
  134. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/integer.h +68 -0
  135. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/isinf.h +16 -0
  136. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/line_offset_list.h +34 -0
  137. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/list.h +62 -0
  138. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/magic_comments.h +23 -0
  139. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/memchr.h +15 -0
  140. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/node.h +32 -0
  141. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/options.h +224 -0
  142. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/parser.h +971 -0
  143. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/regexp.h +42 -0
  144. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/serialize.h +39 -0
  145. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/source.h +72 -0
  146. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/static_literals.h +100 -0
  147. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/stringy.h +35 -0
  148. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/strncasecmp.h +18 -0
  149. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/strpbrk.h +33 -0
  150. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/internal/tokens.h +11 -0
  151. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/json.h +32 -0
  152. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/line_offset_list.h +61 -0
  153. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/magic_comments.h +35 -0
  154. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/node.h +94 -0
  155. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/options.h +335 -0
  156. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/parser.h +348 -0
  157. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/prettyprint.h +31 -0
  158. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/prism.h +131 -0
  159. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/serialize.h +115 -0
  160. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/source.h +155 -0
  161. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/stream.h +28 -0
  162. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/string_query.h +63 -0
  163. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/stringy.h +72 -0
  164. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism/version.h +38 -0
  165. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism_compile.h +204 -0
  166. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/prism_xallocator.h +6 -0
  167. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/probes_helper.h +42 -0
  168. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ractor_core.h +421 -0
  169. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regenc.h +261 -0
  170. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regint.h +983 -0
  171. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/regparse.h +371 -0
  172. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/revision.h +5 -0
  173. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ruby_assert.h +14 -0
  174. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/ruby_atomic.h +115 -0
  175. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/rubyparser.h +1389 -0
  176. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/shape.h +733 -0
  177. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/siphash.h +48 -0
  178. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/symbol.h +116 -0
  179. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_none.h +25 -0
  180. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_pthread.h +63 -0
  181. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_sched.h +271 -0
  182. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/thread_win32.h +48 -0
  183. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/timev.h +58 -0
  184. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/transcode_data.h +138 -0
  185. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/variable.h +26 -0
  186. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/version.h +69 -0
  187. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm.inc +6457 -0
  188. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_call_iseq_optimized.inc +244 -0
  189. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_callinfo.h +688 -0
  190. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_core.h +2509 -0
  191. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_debug.h +124 -0
  192. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_exec.h +202 -0
  193. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_insnhelper.h +280 -0
  194. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_opts.h +65 -0
  195. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vm_sync.h +160 -0
  196. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/vmtc.inc +302 -0
  197. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/yjit.h +87 -0
  198. data/lib/debase/ruby_core_source/ruby-4.1.0-preview1/zjit.h +221 -0
  199. data/lib/debase/ruby_core_source/version.rb +1 -1
  200. metadata +2930 -2724
@@ -0,0 +1,326 @@
1
+ #ifndef INTERNAL_NUMERIC_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_NUMERIC_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Numeric.
10
+ */
11
+ #include "internal/bignum.h" /* for BIGNUM_POSITIVE_P */
12
+ #include "internal/bits.h" /* for RUBY_BIT_ROTL */
13
+ #include "internal/compar.h" /* for rb_cmperr_reason */
14
+ #include "internal/fixnum.h" /* for FIXNUM_POSITIVE_P */
15
+ #include "internal/vm.h" /* for rb_method_basic_definition_p */
16
+ #include "ruby/ruby.h" /* for USE_FLONUM */
17
+
18
+ #define ROUND_TO(mode, even, up, down) \
19
+ ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : \
20
+ (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down)
21
+ #define ROUND_FUNC(mode, name) \
22
+ ROUND_TO(mode, name##_half_even, name##_half_up, name##_half_down)
23
+ #define ROUND_CALL(mode, name, args) \
24
+ ROUND_TO(mode, name##_half_even args, \
25
+ name##_half_up args, name##_half_down args)
26
+
27
+ #ifndef ROUND_DEFAULT
28
+ # define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP
29
+ #endif
30
+
31
+ enum ruby_num_rounding_mode {
32
+ RUBY_NUM_ROUND_HALF_UP,
33
+ RUBY_NUM_ROUND_HALF_EVEN,
34
+ RUBY_NUM_ROUND_HALF_DOWN,
35
+ RUBY_NUM_ROUND_DEFAULT = ROUND_DEFAULT,
36
+ };
37
+
38
+ /* same as internal.h */
39
+ #define numberof(array) ((int)(sizeof(array) / sizeof((array)[0])))
40
+ #define roomof(x, y) (((x) + (y) - 1) / (y))
41
+ #define type_roomof(x, y) roomof(sizeof(x), sizeof(y))
42
+
43
+ #if SIZEOF_DOUBLE <= SIZEOF_VALUE
44
+ typedef double rb_float_value_type;
45
+ #else
46
+ typedef struct {
47
+ VALUE values[roomof(SIZEOF_DOUBLE, SIZEOF_VALUE)];
48
+ } rb_float_value_type;
49
+ #endif
50
+
51
+ struct RFloat {
52
+ struct RBasic basic;
53
+ rb_float_value_type float_value;
54
+ };
55
+
56
+ #define RFLOAT(obj) ((struct RFloat *)(obj))
57
+
58
+ /* numeric.c */
59
+ int rb_num_to_uint(VALUE val, unsigned int *ret);
60
+ VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl);
61
+ double ruby_float_step_size(double beg, double end, double unit, int excl);
62
+ int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless);
63
+ int rb_num_negative_p(VALUE);
64
+ VALUE rb_int_succ(VALUE num);
65
+ VALUE rb_float_uminus(VALUE num);
66
+ VALUE rb_int_plus(VALUE x, VALUE y);
67
+ VALUE rb_float_plus(VALUE x, VALUE y);
68
+ VALUE rb_int_minus(VALUE x, VALUE y);
69
+ VALUE rb_float_minus(VALUE x, VALUE y);
70
+ VALUE rb_int_mul(VALUE x, VALUE y);
71
+ VALUE rb_float_mul(VALUE x, VALUE y);
72
+ VALUE rb_float_div(VALUE x, VALUE y);
73
+ VALUE rb_flo_to_i(VALUE num);
74
+ VALUE rb_int_idiv(VALUE x, VALUE y);
75
+ VALUE rb_int_modulo(VALUE x, VALUE y);
76
+ VALUE rb_int2str(VALUE num, int base);
77
+ VALUE rb_fix_plus(VALUE x, VALUE y);
78
+ VALUE rb_int_gt(VALUE x, VALUE y);
79
+ VALUE rb_float_gt(VALUE x, VALUE y);
80
+ VALUE rb_int_ge(VALUE x, VALUE y);
81
+ enum ruby_num_rounding_mode rb_num_get_rounding_option(VALUE opts);
82
+ VALUE rb_int_fdiv(VALUE x, VALUE y);
83
+ double rb_int_fdiv_double(VALUE x, VALUE y);
84
+ VALUE rb_int_pow(VALUE x, VALUE y);
85
+ VALUE rb_float_pow(VALUE x, VALUE y);
86
+ VALUE rb_int_cmp(VALUE x, VALUE y);
87
+ VALUE rb_int_equal(VALUE x, VALUE y);
88
+ VALUE rb_int_divmod(VALUE x, VALUE y);
89
+ VALUE rb_int_and(VALUE x, VALUE y);
90
+ VALUE rb_int_xor(VALUE x, VALUE y);
91
+ VALUE rb_int_lshift(VALUE x, VALUE y);
92
+ VALUE rb_int_rshift(VALUE x, VALUE y);
93
+ VALUE rb_int_div(VALUE x, VALUE y);
94
+ int rb_int_positive_p(VALUE num);
95
+ int rb_int_negative_p(VALUE num);
96
+ VALUE rb_check_integer_type(VALUE);
97
+ VALUE rb_num_pow(VALUE x, VALUE y);
98
+ VALUE rb_float_ceil(VALUE num, int ndigits);
99
+ VALUE rb_float_floor(VALUE x, int ndigits);
100
+ VALUE rb_float_abs(VALUE flt);
101
+ static inline VALUE rb_num_compare_with_zero(VALUE num, ID mid);
102
+ static inline int rb_num_positive_int_p(VALUE num);
103
+ static inline int rb_num_negative_int_p(VALUE num);
104
+ static inline double rb_float_flonum_value(VALUE v);
105
+ static inline double rb_float_noflonum_value(VALUE v);
106
+ static inline double rb_float_value_inline(VALUE v);
107
+ static inline VALUE rb_float_new_inline(double d);
108
+ static inline bool INT_POSITIVE_P(VALUE num);
109
+ static inline bool INT_NEGATIVE_P(VALUE num);
110
+ static inline bool FLOAT_ZERO_P(VALUE num);
111
+ #define rb_float_value rb_float_value_inline
112
+ #define rb_float_new rb_float_new_inline
113
+
114
+ RUBY_SYMBOL_EXPORT_BEGIN
115
+ /* numeric.c (export) */
116
+ RUBY_SYMBOL_EXPORT_END
117
+
118
+ VALUE rb_flo_div_flo(VALUE x, VALUE y);
119
+ double ruby_float_mod(double x, double y);
120
+ VALUE rb_float_equal(VALUE x, VALUE y);
121
+ int rb_float_cmp(VALUE x, VALUE y);
122
+ VALUE rb_float_eql(VALUE x, VALUE y);
123
+ VALUE rb_fix_aref(VALUE fix, VALUE idx);
124
+ VALUE rb_int_zero_p(VALUE num);
125
+ VALUE rb_int_even_p(VALUE num);
126
+ VALUE rb_int_odd_p(VALUE num);
127
+ VALUE rb_int_abs(VALUE num);
128
+ VALUE rb_int_bit_length(VALUE num);
129
+ VALUE rb_int_bit_count(VALUE num);
130
+ VALUE rb_int_uminus(VALUE num);
131
+ VALUE rb_int_comp(VALUE num);
132
+
133
+ // Unified 128-bit integer structures that work with or without native support:
134
+ union rb_uint128 {
135
+ #ifdef WORDS_BIGENDIAN
136
+ struct {
137
+ uint64_t high;
138
+ uint64_t low;
139
+ } parts;
140
+ #else
141
+ struct {
142
+ uint64_t low;
143
+ uint64_t high;
144
+ } parts;
145
+ #endif
146
+ #ifdef HAVE_UINT128_T
147
+ uint128_t value;
148
+ #endif
149
+ };
150
+ typedef union rb_uint128 rb_uint128_t;
151
+
152
+ union rb_int128 {
153
+ #ifdef WORDS_BIGENDIAN
154
+ struct {
155
+ uint64_t high;
156
+ uint64_t low;
157
+ } parts;
158
+ #else
159
+ struct {
160
+ uint64_t low;
161
+ uint64_t high;
162
+ } parts;
163
+ #endif
164
+ #ifdef HAVE_UINT128_T
165
+ int128_t value;
166
+ #endif
167
+ };
168
+ typedef union rb_int128 rb_int128_t;
169
+
170
+ union uint128_int128_conversion {
171
+ rb_uint128_t uint128;
172
+ rb_int128_t int128;
173
+ };
174
+
175
+ // Conversion functions for 128-bit integers:
176
+ rb_uint128_t rb_numeric_to_uint128(VALUE x);
177
+ rb_int128_t rb_numeric_to_int128(VALUE x);
178
+ VALUE rb_uint128_to_numeric(rb_uint128_t n);
179
+ VALUE rb_int128_to_numeric(rb_int128_t n);
180
+
181
+ static inline bool
182
+ INT_POSITIVE_P(VALUE num)
183
+ {
184
+ if (FIXNUM_P(num)) {
185
+ return FIXNUM_POSITIVE_P(num);
186
+ }
187
+ else {
188
+ return BIGNUM_POSITIVE_P(num);
189
+ }
190
+ }
191
+
192
+ static inline bool
193
+ INT_NEGATIVE_P(VALUE num)
194
+ {
195
+ if (FIXNUM_P(num)) {
196
+ return FIXNUM_NEGATIVE_P(num);
197
+ }
198
+ else {
199
+ return BIGNUM_NEGATIVE_P(num);
200
+ }
201
+ }
202
+
203
+ static inline bool
204
+ FLOAT_ZERO_P(VALUE num)
205
+ {
206
+ return RFLOAT_VALUE(num) == 0.0;
207
+ }
208
+
209
+ static inline VALUE
210
+ rb_num_compare_with_zero(VALUE num, ID mid)
211
+ {
212
+ VALUE zero = INT2FIX(0);
213
+ VALUE r = rb_check_funcall(num, mid, 1, &zero);
214
+ if (RB_UNDEF_P(r)) {
215
+ rb_cmperr_reason(num, zero, "unable to compare with zero");
216
+ }
217
+ return r;
218
+ }
219
+
220
+ static inline int
221
+ rb_num_positive_int_p(VALUE num)
222
+ {
223
+ const ID mid = '>';
224
+
225
+ if (FIXNUM_P(num)) {
226
+ if (rb_method_basic_definition_p(rb_cInteger, mid))
227
+ return FIXNUM_POSITIVE_P(num);
228
+ }
229
+ else if (RB_TYPE_P(num, T_BIGNUM)) {
230
+ if (rb_method_basic_definition_p(rb_cInteger, mid))
231
+ return BIGNUM_POSITIVE_P(num);
232
+ }
233
+ return RTEST(rb_num_compare_with_zero(num, mid));
234
+ }
235
+
236
+ static inline int
237
+ rb_num_negative_int_p(VALUE num)
238
+ {
239
+ const ID mid = '<';
240
+
241
+ if (FIXNUM_P(num)) {
242
+ if (rb_method_basic_definition_p(rb_cInteger, mid))
243
+ return FIXNUM_NEGATIVE_P(num);
244
+ }
245
+ else if (RB_TYPE_P(num, T_BIGNUM)) {
246
+ if (rb_method_basic_definition_p(rb_cInteger, mid))
247
+ return BIGNUM_NEGATIVE_P(num);
248
+ }
249
+ return RTEST(rb_num_compare_with_zero(num, mid));
250
+ }
251
+
252
+ static inline double
253
+ rb_float_flonum_value(VALUE v)
254
+ {
255
+ #if USE_FLONUM
256
+ if (v != (VALUE)0x8000000000000002) { /* LIKELY */
257
+ union {
258
+ double d;
259
+ VALUE v;
260
+ } t;
261
+
262
+ VALUE b63 = (v >> 63);
263
+ /* e: xx1... -> 011... */
264
+ /* xx0... -> 100... */
265
+ /* ^b63 */
266
+ t.v = RUBY_BIT_ROTR((2 - b63) | (v & ~(VALUE)0x03), 3);
267
+ return t.d;
268
+ }
269
+ #endif
270
+ return 0.0;
271
+ }
272
+
273
+ static inline double
274
+ rb_float_noflonum_value(VALUE v)
275
+ {
276
+ #if SIZEOF_DOUBLE <= SIZEOF_VALUE
277
+ return RFLOAT(v)->float_value;
278
+ #else
279
+ union {
280
+ rb_float_value_type v;
281
+ double d;
282
+ } u = {RFLOAT(v)->float_value};
283
+ return u.d;
284
+ #endif
285
+ }
286
+
287
+ static inline double
288
+ rb_float_value_inline(VALUE v)
289
+ {
290
+ if (FLONUM_P(v)) {
291
+ return rb_float_flonum_value(v);
292
+ }
293
+ return rb_float_noflonum_value(v);
294
+ }
295
+
296
+ static inline VALUE
297
+ rb_float_new_inline(double d)
298
+ {
299
+ #if USE_FLONUM
300
+ union {
301
+ double d;
302
+ VALUE v;
303
+ } t;
304
+ int bits;
305
+
306
+ t.d = d;
307
+ bits = (int)((VALUE)(t.v >> 60) & 0x7);
308
+ /* bits contains 3 bits of b62..b60. */
309
+ /* bits - 3 = */
310
+ /* b011 -> b000 */
311
+ /* b100 -> b001 */
312
+
313
+ if (t.v != 0x3000000000000000 /* 1.72723e-77 */ &&
314
+ !((bits-3) & ~0x01)) {
315
+ return (RUBY_BIT_ROTL(t.v, 3) & ~(VALUE)0x01) | 0x02;
316
+ }
317
+ else if (t.v == (VALUE)0) {
318
+ /* +0.0 */
319
+ return 0x8000000000000002;
320
+ }
321
+ /* out of range */
322
+ #endif
323
+ return rb_float_new_in_heap(d);
324
+ }
325
+
326
+ #endif /* INTERNAL_NUMERIC_H */
@@ -0,0 +1,88 @@
1
+ #ifndef INTERNAL_OBJECT_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_OBJECT_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Object.
10
+ */
11
+ #include "ruby/ruby.h" /* for VALUE */
12
+
13
+ /* object.c */
14
+
15
+ VALUE rb_class_allocate_instance(VALUE klass);
16
+ VALUE rb_class_allocate_instance_capa(VALUE klass, uint8_t /* attr_index_t */ max_iv_count);
17
+ VALUE rb_class_search_ancestor(VALUE klass, VALUE super);
18
+ NORETURN(void rb_undefined_alloc(VALUE klass));
19
+ double rb_num_to_dbl(VALUE val);
20
+ VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound);
21
+ VALUE rb_obj_clone_setup(VALUE obj, VALUE clone, VALUE kwfreeze);
22
+ VALUE rb_obj_dup_setup(VALUE obj, VALUE dup);
23
+ VALUE rb_immutable_obj_clone(int, VALUE *, VALUE);
24
+ VALUE rb_check_convert_type_with_id_slow(VALUE,int,const char*,ID);
25
+ int rb_bool_expected(VALUE, const char *, int raise);
26
+
27
+ static inline VALUE
28
+ rb_check_convert_type_with_id(VALUE val, int type, const char *tname, ID method)
29
+ {
30
+ if (RB_TYPE_P(val, type) && type != T_DATA) return val;
31
+ return rb_check_convert_type_with_id_slow(val, type, tname, method);
32
+ }
33
+ static inline void RBASIC_CLEAR_CLASS(VALUE obj);
34
+ static inline void RBASIC_SET_CLASS_RAW(VALUE obj, VALUE klass);
35
+ static inline void RBASIC_SET_CLASS(VALUE obj, VALUE klass);
36
+
37
+ RUBY_SYMBOL_EXPORT_BEGIN
38
+ /* object.c (export) */
39
+ int rb_opts_exception_p(VALUE opts, int default_value);
40
+ RUBY_SYMBOL_EXPORT_END
41
+
42
+ CONSTFUNC(VALUE rb_obj_equal(VALUE obj1, VALUE obj2));
43
+ CONSTFUNC(VALUE rb_obj_not(VALUE obj));
44
+ VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2);
45
+ void rb_obj_copy_ivar(VALUE dest, VALUE obj);
46
+ VALUE rb_false(VALUE obj);
47
+ VALUE rb_convert_type_with_id(VALUE v, int t, const char* nam, ID mid);
48
+ VALUE rb_obj_size(VALUE self, VALUE args, VALUE obj);
49
+ VALUE rb_get_freeze_opt(int argc, VALUE *argv);
50
+
51
+ static inline void
52
+ RBASIC_SET_CLASS_RAW(VALUE obj, VALUE klass)
53
+ {
54
+ const VALUE *ptr = &RBASIC(obj)->klass;
55
+ *(VALUE *)ptr = klass;
56
+ }
57
+
58
+ static inline void
59
+ RBASIC_CLEAR_CLASS(VALUE obj)
60
+ {
61
+ RBASIC_SET_CLASS_RAW(obj, 0);
62
+ }
63
+
64
+ static inline void
65
+ RBASIC_SET_CLASS(VALUE obj, VALUE klass)
66
+ {
67
+ VALUE oldv = RBASIC_CLASS(obj);
68
+ RBASIC_SET_CLASS_RAW(obj, klass);
69
+ RB_OBJ_WRITTEN(obj, oldv, klass);
70
+ }
71
+
72
+ static inline void
73
+ ROBJECT_SET_EXTENDED(VALUE obj, VALUE fields_obj)
74
+ {
75
+ RUBY_ASSERT(RB_TYPE_P(obj, T_OBJECT));
76
+ RUBY_ASSERT(RB_TYPE_P(fields_obj, T_IMEMO));
77
+ RB_OBJ_WRITE(obj, &ROBJECT(obj)->as.extended, fields_obj);
78
+ }
79
+
80
+ static inline size_t
81
+ rb_obj_embedded_size(uint32_t fields_count)
82
+ {
83
+ size_t size = offsetof(struct RObject, as.ary) + (sizeof(VALUE) * fields_count);
84
+ // Ensure enough room for the heap pointer if this expands
85
+ if (size < sizeof(struct RObject)) size = sizeof(struct RObject);
86
+ return size;
87
+ }
88
+ #endif /* INTERNAL_OBJECT_H */
@@ -0,0 +1,24 @@
1
+ #ifndef INTERNAL_OBJSPACE_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_OBJSPACE_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Objspace.
10
+ */
11
+
12
+ RUBY_SYMBOL_EXPORT_BEGIN
13
+
14
+ /* from intern/class.h */
15
+ RUBY_EXTERN VALUE rb_class_super_of(VALUE klass);
16
+ RUBY_EXTERN VALUE rb_class_singleton_p(VALUE klass);
17
+ RUBY_EXTERN unsigned char rb_class_variation_count(VALUE klass);
18
+
19
+ /* from vm_sync.h */
20
+ RUBY_EXTERN VALUE rb_vm_lock_with_barrier(VALUE (*func)(void *args), void *args);
21
+
22
+ RUBY_SYMBOL_EXPORT_END
23
+
24
+ #endif /* INTERNAL_OBJSPACE_H */
@@ -0,0 +1,131 @@
1
+ #ifndef INTERNAL_PARSE_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_PARSE_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for the parser.
10
+ */
11
+ #include <limits.h>
12
+ #include "rubyparser.h"
13
+ #include "internal/static_assert.h"
14
+
15
+ // The default parser to use for Ruby code.
16
+ typedef enum {
17
+ RB_DEFAULT_PARSER_PARSE_Y,
18
+ RB_DEFAULT_PARSER_PRISM,
19
+ } ruby_default_parser_enum;
20
+
21
+ ruby_default_parser_enum rb_ruby_default_parser(void);
22
+ void rb_ruby_default_parser_set(ruby_default_parser_enum parser);
23
+
24
+ #define rb_ruby_prism_p() (rb_ruby_default_parser() == RB_DEFAULT_PARSER_PRISM)
25
+
26
+ #ifdef UNIVERSAL_PARSER
27
+ #define rb_encoding const void
28
+ #endif
29
+
30
+ struct rb_iseq_struct; /* in vm_core.h */
31
+
32
+ /* structs for managing terminator of string literal and heredocment */
33
+ typedef struct rb_strterm_literal_struct {
34
+ long nest;
35
+ int func; /* STR_FUNC_* (e.g., STR_FUNC_ESCAPE and STR_FUNC_EXPAND) */
36
+ int paren; /* '(' of `%q(...)` */
37
+ int term; /* ')' of `%q(...)` */
38
+ } rb_strterm_literal_t;
39
+
40
+ typedef struct rb_strterm_heredoc_struct {
41
+ rb_parser_string_t *lastline; /* the string of line that contains `<<"END"` */
42
+ long offset; /* the column of END in `<<"END"` */
43
+ int sourceline; /* lineno of the line that contains `<<"END"` */
44
+ unsigned length; /* the length of END in `<<"END"` */
45
+ uint8_t quote;
46
+ uint8_t func;
47
+ } rb_strterm_heredoc_t;
48
+
49
+ #define HERETERM_LENGTH_MAX UINT_MAX
50
+
51
+ typedef struct rb_strterm_struct {
52
+ bool heredoc;
53
+ union {
54
+ rb_strterm_literal_t literal;
55
+ rb_strterm_heredoc_t heredoc;
56
+ } u;
57
+ } rb_strterm_t;
58
+
59
+ /* parse.y */
60
+ void rb_ruby_parser_mark(void *ptr);
61
+ size_t rb_ruby_parser_memsize(const void *ptr);
62
+
63
+ void rb_ruby_parser_set_options(rb_parser_t *p, int print, int loop, int chomp, int split);
64
+ rb_parser_t *rb_ruby_parser_set_context(rb_parser_t *p, const struct rb_iseq_struct *base, int main);
65
+ void rb_ruby_parser_set_script_lines(rb_parser_t *p);
66
+ void rb_ruby_parser_error_tolerant(rb_parser_t *p);
67
+ void rb_ruby_parser_keep_tokens(rb_parser_t *p);
68
+ typedef rb_parser_string_t*(rb_parser_lex_gets_func)(struct parser_params*, rb_parser_input_data, int);
69
+ rb_ast_t *rb_parser_compile(rb_parser_t *p, rb_parser_lex_gets_func *gets, VALUE fname, rb_parser_input_data input, int line);
70
+
71
+ RUBY_SYMBOL_EXPORT_BEGIN
72
+
73
+ rb_encoding *rb_ruby_parser_encoding(rb_parser_t *p);
74
+ int rb_ruby_parser_end_seen_p(rb_parser_t *p);
75
+ int rb_ruby_parser_set_yydebug(rb_parser_t *p, int flag);
76
+ rb_parser_string_t *rb_str_to_parser_string(rb_parser_t *p, VALUE str);
77
+ void rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str);
78
+
79
+ int rb_parser_dvar_defined_ref(struct parser_params*, ID, ID**);
80
+ ID rb_parser_internal_id(struct parser_params*);
81
+ typedef void (*rb_parser_reg_fragment_error_func)(struct parser_params *, VALUE);
82
+ int rb_parser_reg_fragment_check(struct parser_params*, rb_parser_string_t*, int, rb_parser_reg_fragment_error_func);
83
+ int rb_reg_named_capture_assign_iter_impl(struct parser_params *p, const char *s, long len, rb_encoding *enc, NODE **succ_block, const rb_code_location_t *loc, rb_parser_assignable_func assignable);
84
+ int rb_parser_local_defined(struct parser_params *p, ID id, const struct rb_iseq_struct *iseq);
85
+ NODE *rb_parser_assignable(struct parser_params *p, ID id, NODE *val, const YYLTYPE *loc);
86
+
87
+ RUBY_SYMBOL_EXPORT_END
88
+
89
+ #ifndef UNIVERSAL_PARSER
90
+ rb_parser_t *rb_ruby_parser_allocate(void);
91
+ rb_parser_t *rb_ruby_parser_new(void);
92
+ #endif
93
+
94
+ #ifdef RIPPER
95
+ void ripper_parser_mark(void *ptr);
96
+ void ripper_parser_free(void *ptr);
97
+ size_t ripper_parser_memsize(const void *ptr);
98
+ void ripper_error(struct parser_params *p);
99
+ VALUE ripper_value(struct parser_params *p);
100
+ int rb_ruby_parser_get_yydebug(rb_parser_t *p);
101
+ void rb_ruby_parser_set_value(rb_parser_t *p, VALUE value);
102
+ int rb_ruby_parser_error_p(rb_parser_t *p);
103
+ VALUE rb_ruby_parser_debug_output(rb_parser_t *p);
104
+ void rb_ruby_parser_set_debug_output(rb_parser_t *p, VALUE output);
105
+ VALUE rb_ruby_parser_parsing_thread(rb_parser_t *p);
106
+ void rb_ruby_parser_set_parsing_thread(rb_parser_t *p, VALUE parsing_thread);
107
+ void rb_ruby_parser_ripper_initialize(rb_parser_t *p, rb_parser_lex_gets_func *gets, rb_parser_input_data input, VALUE sourcefile_string, const char *sourcefile, int sourceline);
108
+ VALUE rb_ruby_parser_result(rb_parser_t *p);
109
+ rb_encoding *rb_ruby_parser_enc(rb_parser_t *p);
110
+ VALUE rb_ruby_parser_ruby_sourcefile_string(rb_parser_t *p);
111
+ int rb_ruby_parser_ruby_sourceline(rb_parser_t *p);
112
+ int rb_ruby_parser_lex_state(rb_parser_t *p);
113
+ void rb_ruby_ripper_parse0(rb_parser_t *p);
114
+ int rb_ruby_ripper_dedent_string(rb_parser_t *p, rb_parser_string_t *string, int width);
115
+ int rb_ruby_ripper_initialized_p(rb_parser_t *p);
116
+ void rb_ruby_ripper_parser_initialize(rb_parser_t *p);
117
+ long rb_ruby_ripper_column(rb_parser_t *p);
118
+ long rb_ruby_ripper_token_len(rb_parser_t *p);
119
+ rb_parser_string_t *rb_ruby_ripper_lex_lastline(rb_parser_t *p);
120
+ VALUE rb_ruby_ripper_lex_state_name(struct parser_params *p, int state);
121
+ #ifdef UNIVERSAL_PARSER
122
+ rb_parser_t *rb_ripper_parser_params_allocate(const rb_parser_config_t *config);
123
+ #endif
124
+ struct parser_params *rb_ruby_ripper_parser_allocate(void);
125
+ #endif
126
+
127
+ #ifdef UNIVERSAL_PARSER
128
+ #undef rb_encoding
129
+ #endif
130
+
131
+ #endif /* INTERNAL_PARSE_H */
@@ -0,0 +1,34 @@
1
+ #ifndef INTERNAL_PROC_H /*-*-C-*-vi:se ft=c:*/
2
+ #define INTERNAL_PROC_H
3
+ /**
4
+ * @author Ruby developers <ruby-core@ruby-lang.org>
5
+ * @copyright This file is a part of the programming language Ruby.
6
+ * Permission is hereby granted, to either redistribute and/or
7
+ * modify this file, provided that the conditions mentioned in the
8
+ * file COPYING are met. Consult the file for details.
9
+ * @brief Internal header for Proc.
10
+ */
11
+ #include "ruby/ruby.h" /* for rb_block_call_func_t */
12
+ #include "ruby/st.h" /* for st_index_t */
13
+ struct rb_block; /* in vm_core.h */
14
+ struct rb_code_location_struct; /* in rubyparser.h */
15
+ struct rb_iseq_struct; /* in vm_core.h */
16
+
17
+ /* proc.c */
18
+ VALUE rb_proc_location(VALUE self);
19
+ st_index_t rb_hash_proc(st_index_t hash, VALUE proc);
20
+ VALUE rb_proc_eq(VALUE self, VALUE other);
21
+ int rb_block_pair_yield_optimizable(void);
22
+ int rb_block_arity(void);
23
+ int rb_block_min_max_arity(int *max);
24
+ VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info);
25
+ VALUE rb_callable_receiver(VALUE);
26
+ VALUE rb_source_range_new(VALUE path, VALUE absolute_path,
27
+ const struct rb_code_location_struct *location);
28
+
29
+ VALUE rb_func_proc_dup(VALUE src_obj);
30
+ VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc);
31
+ VALUE rb_iseq_location(const struct rb_iseq_struct *iseq);
32
+ VALUE rb_sym_to_proc(VALUE sym);
33
+
34
+ #endif /* INTERNAL_PROC_H */