debase-ruby_core_source 3.3.6 → 3.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (293) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -0
  3. data/CHANGELOG.md +6 -0
  4. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/builtin.h +7 -1
  5. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/darray.h +1 -3
  6. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/id.h +5 -0
  7. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/insns.inc +2 -0
  8. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/insns_info.inc +310 -175
  9. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/basic_operators.h +1 -0
  10. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/bits.h +82 -0
  11. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/encoding.h +2 -0
  12. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/error.h +26 -0
  13. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/fixnum.h +1 -0
  14. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/gc.h +14 -6
  15. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/imemo.h +6 -1
  16. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/io.h +1 -1
  17. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/parse.h +2 -1
  18. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/proc.h +1 -0
  19. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/ractor.h +4 -0
  20. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/sanitizers.h +31 -39
  21. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/string.h +22 -10
  22. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/thread.h +23 -0
  23. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/vm.h +1 -1
  24. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/method.h +1 -0
  25. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/optunifs.inc +1 -1
  26. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/parse.h +2 -2
  27. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/ast.h +427 -3
  28. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/defines.h +8 -7
  29. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/diagnostic.h +1 -0
  30. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/extension.h +1 -1
  31. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/prism/prism.h +47 -11
  32. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/version.h +2 -2
  33. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism_compile.h +5 -5
  34. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/ractor_core.h +6 -6
  35. data/lib/debase/ruby_core_source/ruby-3.4.0/revision.h +5 -0
  36. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/rubyparser.h +3 -2
  37. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/thread_pthread.h +0 -1
  38. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/version.h +1 -1
  39. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/vm.inc +151 -88
  40. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/vm_core.h +40 -12
  41. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/vm_sync.h +3 -3
  42. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/vmtc.inc +2 -0
  43. data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/yjit.h +1 -0
  44. data/lib/debase/ruby_core_source/version.rb +1 -1
  45. metadata +147 -293
  46. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/darray.h +0 -191
  47. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/debug_counter.h +0 -423
  48. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/dln.h +0 -34
  49. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/id.h +0 -343
  50. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/insns.inc +0 -259
  51. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/insns_info.inc +0 -9530
  52. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/array.h +0 -151
  53. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/basic_operators.h +0 -63
  54. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/bits.h +0 -568
  55. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/class.h +0 -283
  56. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/error.h +0 -216
  57. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/fixnum.h +0 -184
  58. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/gc.h +0 -334
  59. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/hash.h +0 -191
  60. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/imemo.h +0 -260
  61. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/io.h +0 -140
  62. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/parse.h +0 -117
  63. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/ractor.h +0 -6
  64. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/sanitizers.h +0 -297
  65. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/string.h +0 -182
  66. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/thread.h +0 -79
  67. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/vm.h +0 -137
  68. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/known_errors.inc +0 -1419
  69. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/method.h +0 -255
  70. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/optunifs.inc +0 -43
  71. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/parse.h +0 -243
  72. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/ast.h +0 -6245
  73. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/defines.h +0 -206
  74. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/diagnostic.h +0 -433
  75. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/extension.h +0 -19
  76. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/node.h +0 -150
  77. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/options.h +0 -305
  78. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/parser.h +0 -891
  79. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/regexp.h +0 -33
  80. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/static_literals.h +0 -120
  81. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_char.h +0 -205
  82. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_constant_pool.h +0 -226
  83. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_integer.h +0 -119
  84. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_newline_list.h +0 -102
  85. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_string.h +0 -174
  86. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_string_list.h +0 -44
  87. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/version.h +0 -29
  88. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism_compile.h +0 -88
  89. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ractor_core.h +0 -393
  90. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/regint.h +0 -1010
  91. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/revision.h +0 -5
  92. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/rubyparser.h +0 -1430
  93. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/shape.h +0 -233
  94. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/symbol.h +0 -118
  95. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/thread_pthread.h +0 -166
  96. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/version.h +0 -69
  97. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm.inc +0 -5643
  98. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_callinfo.h +0 -605
  99. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_core.h +0 -2236
  100. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_insnhelper.h +0 -272
  101. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_sync.h +0 -137
  102. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vmtc.inc +0 -253
  103. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/addr2line.h +0 -22
  104. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/builtin.h +0 -119
  105. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/build_assert/build_assert.h +0 -40
  106. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/check_type/check_type.h +0 -63
  107. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/container_of/container_of.h +0 -142
  108. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/list/list.h +0 -791
  109. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/str/str.h +0 -17
  110. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/constant.h +0 -53
  111. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/encindex.h +0 -70
  112. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/eval_intern.h +0 -324
  113. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/hrtime.h +0 -237
  114. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/id_table.h +0 -39
  115. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/bignum.h +0 -244
  116. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/cmdlineopt.h +0 -65
  117. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/compar.h +0 -29
  118. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/compile.h +0 -34
  119. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/compilers.h +0 -107
  120. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/complex.h +0 -29
  121. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/cont.h +0 -35
  122. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/dir.h +0 -16
  123. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/enc.h +0 -19
  124. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/encoding.h +0 -36
  125. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/enum.h +0 -18
  126. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/enumerator.h +0 -21
  127. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/eval.h +0 -33
  128. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/file.h +0 -38
  129. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/inits.h +0 -47
  130. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/load.h +0 -18
  131. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/loadpath.h +0 -16
  132. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/math.h +0 -23
  133. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/missing.h +0 -19
  134. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/numeric.h +0 -274
  135. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/object.h +0 -63
  136. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/proc.h +0 -30
  137. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/process.h +0 -124
  138. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/random.h +0 -17
  139. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/range.h +0 -40
  140. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/rational.h +0 -71
  141. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/re.h +0 -28
  142. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/ruby_parser.h +0 -102
  143. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/serial.h +0 -23
  144. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/signal.h +0 -24
  145. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/st.h +0 -11
  146. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/static_assert.h +0 -16
  147. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/struct.h +0 -127
  148. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/symbol.h +0 -45
  149. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/time.h +0 -34
  150. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/transcode.h +0 -23
  151. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/util.h +0 -27
  152. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/variable.h +0 -72
  153. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/warnings.h +0 -16
  154. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal.h +0 -108
  155. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/iseq.h +0 -340
  156. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/node.h +0 -111
  157. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/node_name.inc +0 -224
  158. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/optinsn.inc +0 -128
  159. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_bits.h +0 -564
  160. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_node.h +0 -32
  161. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_st.h +0 -162
  162. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_value.h +0 -106
  163. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/encoding.h +0 -283
  164. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/pack.h +0 -163
  165. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/prettyprint.h +0 -34
  166. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/prism.h +0 -336
  167. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_buffer.h +0 -218
  168. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_list.h +0 -97
  169. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_memchr.h +0 -29
  170. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_strncasecmp.h +0 -32
  171. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_strpbrk.h +0 -46
  172. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/probes_helper.h +0 -42
  173. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/regenc.h +0 -254
  174. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/regparse.h +0 -371
  175. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/revision.h +0 -5
  176. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rjit.h +0 -101
  177. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rjit_c.h +0 -165
  178. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ruby_assert.h +0 -14
  179. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ruby_atomic.h +0 -23
  180. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/siphash.h +0 -48
  181. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/thread_none.h +0 -21
  182. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/thread_win32.h +0 -58
  183. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/timev.h +0 -58
  184. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/transcode_data.h +0 -138
  185. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/variable.h +0 -39
  186. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_call_iseq_optimized.inc +0 -244
  187. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_debug.h +0 -124
  188. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_exec.h +0 -199
  189. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_opts.h +0 -67
  190. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/yjit.h +0 -79
  191. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/addr2line.h +0 -0
  192. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/ccan/build_assert/build_assert.h +0 -0
  193. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/ccan/check_type/check_type.h +0 -0
  194. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/ccan/container_of/container_of.h +0 -0
  195. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/ccan/list/list.h +0 -0
  196. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/ccan/str/str.h +0 -0
  197. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/constant.h +0 -0
  198. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/debug_counter.h +0 -0
  199. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/dln.h +0 -0
  200. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/encindex.h +0 -0
  201. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/eval_intern.h +0 -0
  202. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/hrtime.h +0 -0
  203. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/id_table.h +0 -0
  204. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/array.h +0 -0
  205. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/bignum.h +0 -0
  206. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/class.h +0 -0
  207. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/cmdlineopt.h +0 -0
  208. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/compar.h +0 -0
  209. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/compile.h +0 -0
  210. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/compilers.h +0 -0
  211. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/complex.h +0 -0
  212. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/cont.h +0 -0
  213. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/dir.h +0 -0
  214. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/enc.h +0 -0
  215. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/enum.h +0 -0
  216. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/enumerator.h +0 -0
  217. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/eval.h +0 -0
  218. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/file.h +0 -0
  219. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/internal/hash.h +0 -0
  220. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/inits.h +0 -0
  221. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/load.h +0 -0
  222. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/loadpath.h +0 -0
  223. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/math.h +0 -0
  224. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/missing.h +0 -0
  225. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/numeric.h +0 -0
  226. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/object.h +0 -0
  227. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/process.h +0 -0
  228. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/random.h +0 -0
  229. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/range.h +0 -0
  230. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/rational.h +0 -0
  231. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/re.h +0 -0
  232. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/ruby_parser.h +0 -0
  233. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/serial.h +0 -0
  234. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/signal.h +0 -0
  235. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/st.h +0 -0
  236. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/static_assert.h +0 -0
  237. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/struct.h +0 -0
  238. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/symbol.h +0 -0
  239. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/time.h +0 -0
  240. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/transcode.h +0 -0
  241. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/util.h +0 -0
  242. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/variable.h +0 -0
  243. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal/warnings.h +0 -0
  244. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/internal.h +0 -0
  245. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/iseq.h +0 -0
  246. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/known_errors.inc +0 -0
  247. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/node.h +0 -0
  248. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/node_name.inc +0 -0
  249. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/optinsn.inc +0 -0
  250. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/parser_bits.h +0 -0
  251. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/parser_node.h +0 -0
  252. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/parser_st.h +0 -0
  253. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/parser_value.h +0 -0
  254. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/prism/encoding.h +0 -0
  255. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/node.h +0 -0
  256. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/options.h +0 -0
  257. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/prism/pack.h +0 -0
  258. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/parser.h +0 -0
  259. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/prism/prettyprint.h +0 -0
  260. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/regexp.h +0 -0
  261. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/static_literals.h +0 -0
  262. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/prism/util/pm_buffer.h +0 -0
  263. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/util/pm_char.h +0 -0
  264. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/util/pm_constant_pool.h +0 -0
  265. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/util/pm_integer.h +0 -0
  266. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/prism/util/pm_list.h +0 -0
  267. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/prism/util/pm_memchr.h +0 -0
  268. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/util/pm_newline_list.h +0 -0
  269. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/prism/util/pm_string.h +0 -0
  270. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/prism/util/pm_strncasecmp.h +0 -0
  271. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/prism/util/pm_strpbrk.h +0 -0
  272. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/probes_helper.h +0 -0
  273. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/regenc.h +0 -0
  274. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/regint.h +0 -0
  275. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/regparse.h +0 -0
  276. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/rjit.h +0 -0
  277. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/rjit_c.h +0 -0
  278. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/ruby_assert.h +0 -0
  279. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/ruby_atomic.h +0 -0
  280. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/shape.h +0 -0
  281. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/siphash.h +0 -0
  282. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/symbol.h +0 -0
  283. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/thread_none.h +0 -0
  284. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/thread_win32.h +0 -0
  285. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/timev.h +0 -0
  286. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/transcode_data.h +0 -0
  287. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/variable.h +0 -0
  288. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/vm_call_iseq_optimized.inc +0 -0
  289. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/vm_callinfo.h +0 -0
  290. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/vm_debug.h +0 -0
  291. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/vm_exec.h +0 -0
  292. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview2 → ruby-3.4.0}/vm_insnhelper.h +0 -0
  293. /data/lib/debase/ruby_core_source/{ruby-3.4.0-preview1 → ruby-3.4.0}/vm_opts.h +0 -0
@@ -1,791 +0,0 @@
1
- /* Licensed under BSD-MIT - see ccan/licenses/BSD-MIT file for details */
2
- #ifndef CCAN_LIST_H
3
- #define CCAN_LIST_H
4
- #include <assert.h>
5
- #include "ccan/str/str.h"
6
- #include "ccan/container_of/container_of.h"
7
- #include "ccan/check_type/check_type.h"
8
-
9
- /**
10
- * struct ccan_list_node - an entry in a doubly-linked list
11
- * @next: next entry (self if empty)
12
- * @prev: previous entry (self if empty)
13
- *
14
- * This is used as an entry in a linked list.
15
- * Example:
16
- * struct child {
17
- * const char *name;
18
- * // Linked list of all us children.
19
- * struct ccan_list_node list;
20
- * };
21
- */
22
- struct ccan_list_node
23
- {
24
- struct ccan_list_node *next, *prev;
25
- };
26
-
27
- /**
28
- * struct ccan_list_head - the head of a doubly-linked list
29
- * @h: the ccan_list_head (containing next and prev pointers)
30
- *
31
- * This is used as the head of a linked list.
32
- * Example:
33
- * struct parent {
34
- * const char *name;
35
- * struct ccan_list_head children;
36
- * unsigned int num_children;
37
- * };
38
- */
39
- struct ccan_list_head
40
- {
41
- struct ccan_list_node n;
42
- };
43
-
44
- #define CCAN_LIST_LOC __FILE__ ":" ccan_stringify(__LINE__)
45
- #define ccan_list_debug(h, loc) ((void)loc, h)
46
- #define ccan_list_debug_node(n, loc) ((void)loc, n)
47
-
48
- /**
49
- * CCAN_LIST_HEAD_INIT - initializer for an empty ccan_list_head
50
- * @name: the name of the list.
51
- *
52
- * Explicit initializer for an empty list.
53
- *
54
- * See also:
55
- * CCAN_LIST_HEAD, ccan_list_head_init()
56
- *
57
- * Example:
58
- * static struct ccan_list_head my_list = CCAN_LIST_HEAD_INIT(my_list);
59
- */
60
- #define CCAN_LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
61
-
62
- /**
63
- * CCAN_LIST_HEAD - define and initialize an empty ccan_list_head
64
- * @name: the name of the list.
65
- *
66
- * The CCAN_LIST_HEAD macro defines a ccan_list_head and initializes it to an empty
67
- * list. It can be prepended by "static" to define a static ccan_list_head.
68
- *
69
- * See also:
70
- * CCAN_LIST_HEAD_INIT, ccan_list_head_init()
71
- *
72
- * Example:
73
- * static CCAN_LIST_HEAD(my_global_list);
74
- */
75
- #define CCAN_LIST_HEAD(name) \
76
- struct ccan_list_head name = CCAN_LIST_HEAD_INIT(name)
77
-
78
- /**
79
- * ccan_list_head_init - initialize a ccan_list_head
80
- * @h: the ccan_list_head to set to the empty list
81
- *
82
- * Example:
83
- * ...
84
- * struct parent *parent = malloc(sizeof(*parent));
85
- *
86
- * ccan_list_head_init(&parent->children);
87
- * parent->num_children = 0;
88
- */
89
- static inline void ccan_list_head_init(struct ccan_list_head *h)
90
- {
91
- h->n.next = h->n.prev = &h->n;
92
- }
93
-
94
- /**
95
- * ccan_list_node_init - initialize a ccan_list_node
96
- * @n: the ccan_list_node to link to itself.
97
- *
98
- * You don't need to use this normally! But it lets you ccan_list_del(@n)
99
- * safely.
100
- */
101
- static inline void ccan_list_node_init(struct ccan_list_node *n)
102
- {
103
- n->next = n->prev = n;
104
- }
105
-
106
- /**
107
- * ccan_list_add_after - add an entry after an existing node in a linked list
108
- * @h: the ccan_list_head to add the node to (for debugging)
109
- * @p: the existing ccan_list_node to add the node after
110
- * @n: the new ccan_list_node to add to the list.
111
- *
112
- * The existing ccan_list_node must already be a member of the list.
113
- * The new ccan_list_node does not need to be initialized; it will be overwritten.
114
- *
115
- * Example:
116
- * struct child c1, c2, c3;
117
- * CCAN_LIST_HEAD(h);
118
- *
119
- * ccan_list_add_tail(&h, &c1.list);
120
- * ccan_list_add_tail(&h, &c3.list);
121
- * ccan_list_add_after(&h, &c1.list, &c2.list);
122
- */
123
- #define ccan_list_add_after(h, p, n) ccan_list_add_after_(h, p, n, CCAN_LIST_LOC)
124
- static inline void ccan_list_add_after_(struct ccan_list_head *h,
125
- struct ccan_list_node *p,
126
- struct ccan_list_node *n,
127
- const char *abortstr)
128
- {
129
- n->next = p->next;
130
- n->prev = p;
131
- p->next->prev = n;
132
- p->next = n;
133
- (void)ccan_list_debug(h, abortstr);
134
- }
135
-
136
- /**
137
- * ccan_list_add - add an entry at the start of a linked list.
138
- * @h: the ccan_list_head to add the node to
139
- * @n: the ccan_list_node to add to the list.
140
- *
141
- * The ccan_list_node does not need to be initialized; it will be overwritten.
142
- * Example:
143
- * struct child *child = malloc(sizeof(*child));
144
- *
145
- * child->name = "marvin";
146
- * ccan_list_add(&parent->children, &child->list);
147
- * parent->num_children++;
148
- */
149
- #define ccan_list_add(h, n) ccan_list_add_(h, n, CCAN_LIST_LOC)
150
- static inline void ccan_list_add_(struct ccan_list_head *h,
151
- struct ccan_list_node *n,
152
- const char *abortstr)
153
- {
154
- ccan_list_add_after_(h, &h->n, n, abortstr);
155
- }
156
-
157
- /**
158
- * ccan_list_add_before - add an entry before an existing node in a linked list
159
- * @h: the ccan_list_head to add the node to (for debugging)
160
- * @p: the existing ccan_list_node to add the node before
161
- * @n: the new ccan_list_node to add to the list.
162
- *
163
- * The existing ccan_list_node must already be a member of the list.
164
- * The new ccan_list_node does not need to be initialized; it will be overwritten.
165
- *
166
- * Example:
167
- * ccan_list_head_init(&h);
168
- * ccan_list_add_tail(&h, &c1.list);
169
- * ccan_list_add_tail(&h, &c3.list);
170
- * ccan_list_add_before(&h, &c3.list, &c2.list);
171
- */
172
- #define ccan_list_add_before(h, p, n) ccan_list_add_before_(h, p, n, CCAN_LIST_LOC)
173
- static inline void ccan_list_add_before_(struct ccan_list_head *h,
174
- struct ccan_list_node *p,
175
- struct ccan_list_node *n,
176
- const char *abortstr)
177
- {
178
- n->next = p;
179
- n->prev = p->prev;
180
- p->prev->next = n;
181
- p->prev = n;
182
- (void)ccan_list_debug(h, abortstr);
183
- }
184
-
185
- /**
186
- * ccan_list_add_tail - add an entry at the end of a linked list.
187
- * @h: the ccan_list_head to add the node to
188
- * @n: the ccan_list_node to add to the list.
189
- *
190
- * The ccan_list_node does not need to be initialized; it will be overwritten.
191
- * Example:
192
- * ccan_list_add_tail(&parent->children, &child->list);
193
- * parent->num_children++;
194
- */
195
- #define ccan_list_add_tail(h, n) ccan_list_add_tail_(h, n, CCAN_LIST_LOC)
196
- static inline void ccan_list_add_tail_(struct ccan_list_head *h,
197
- struct ccan_list_node *n,
198
- const char *abortstr)
199
- {
200
- ccan_list_add_before_(h, &h->n, n, abortstr);
201
- }
202
-
203
- /**
204
- * ccan_list_empty - is a list empty?
205
- * @h: the ccan_list_head
206
- *
207
- * If the list is empty, returns true.
208
- *
209
- * Example:
210
- * assert(ccan_list_empty(&parent->children) == (parent->num_children == 0));
211
- */
212
- #define ccan_list_empty(h) ccan_list_empty_(h, CCAN_LIST_LOC)
213
- static inline int ccan_list_empty_(const struct ccan_list_head *h, const char* abortstr)
214
- {
215
- (void)ccan_list_debug(h, abortstr);
216
- return h->n.next == &h->n;
217
- }
218
-
219
- /**
220
- * ccan_list_empty_nodebug - is a list empty (and don't perform debug checks)?
221
- * @h: the ccan_list_head
222
- *
223
- * If the list is empty, returns true.
224
- * This differs from list_empty() in that if CCAN_LIST_DEBUG is set it
225
- * will NOT perform debug checks. Only use this function if you REALLY
226
- * know what you're doing.
227
- *
228
- * Example:
229
- * assert(ccan_list_empty_nodebug(&parent->children) == (parent->num_children == 0));
230
- */
231
- #ifndef CCAN_LIST_DEBUG
232
- #define ccan_list_empty_nodebug(h) ccan_list_empty(h)
233
- #else
234
- static inline int ccan_list_empty_nodebug(const struct ccan_list_head *h)
235
- {
236
- return h->n.next == &h->n;
237
- }
238
- #endif
239
-
240
- /**
241
- * ccan_list_empty_nocheck - is a list empty?
242
- * @h: the ccan_list_head
243
- *
244
- * If the list is empty, returns true. This doesn't perform any
245
- * debug check for list consistency, so it can be called without
246
- * locks, racing with the list being modified. This is ok for
247
- * checks where an incorrect result is not an issue (optimized
248
- * bail out path for example).
249
- */
250
- static inline bool ccan_list_empty_nocheck(const struct ccan_list_head *h)
251
- {
252
- return h->n.next == &h->n;
253
- }
254
-
255
- /**
256
- * ccan_list_del - delete an entry from an (unknown) linked list.
257
- * @n: the ccan_list_node to delete from the list.
258
- *
259
- * Note that this leaves @n in an undefined state; it can be added to
260
- * another list, but not deleted again.
261
- *
262
- * See also:
263
- * ccan_list_del_from(), ccan_list_del_init()
264
- *
265
- * Example:
266
- * ccan_list_del(&child->list);
267
- * parent->num_children--;
268
- */
269
- #define ccan_list_del(n) ccan_list_del_(n, CCAN_LIST_LOC)
270
- static inline void ccan_list_del_(struct ccan_list_node *n, const char* abortstr)
271
- {
272
- (void)ccan_list_debug_node(n, abortstr);
273
- n->next->prev = n->prev;
274
- n->prev->next = n->next;
275
- #ifdef CCAN_LIST_DEBUG
276
- /* Catch use-after-del. */
277
- n->next = n->prev = NULL;
278
- #endif
279
- }
280
-
281
- /**
282
- * ccan_list_del_init - delete a node, and reset it so it can be deleted again.
283
- * @n: the ccan_list_node to be deleted.
284
- *
285
- * ccan_list_del(@n) or ccan_list_del_init() again after this will be safe,
286
- * which can be useful in some cases.
287
- *
288
- * See also:
289
- * ccan_list_del_from(), ccan_list_del()
290
- *
291
- * Example:
292
- * ccan_list_del_init(&child->list);
293
- * parent->num_children--;
294
- */
295
- #define ccan_list_del_init(n) ccan_list_del_init_(n, CCAN_LIST_LOC)
296
- static inline void ccan_list_del_init_(struct ccan_list_node *n, const char *abortstr)
297
- {
298
- ccan_list_del_(n, abortstr);
299
- ccan_list_node_init(n);
300
- }
301
-
302
- /**
303
- * ccan_list_del_from - delete an entry from a known linked list.
304
- * @h: the ccan_list_head the node is in.
305
- * @n: the ccan_list_node to delete from the list.
306
- *
307
- * This explicitly indicates which list a node is expected to be in,
308
- * which is better documentation and can catch more bugs.
309
- *
310
- * See also: ccan_list_del()
311
- *
312
- * Example:
313
- * ccan_list_del_from(&parent->children, &child->list);
314
- * parent->num_children--;
315
- */
316
- static inline void ccan_list_del_from(struct ccan_list_head *h, struct ccan_list_node *n)
317
- {
318
- #ifdef CCAN_LIST_DEBUG
319
- {
320
- /* Thorough check: make sure it was in list! */
321
- struct ccan_list_node *i;
322
- for (i = h->n.next; i != n; i = i->next)
323
- assert(i != &h->n);
324
- }
325
- #endif /* CCAN_LIST_DEBUG */
326
-
327
- /* Quick test that catches a surprising number of bugs. */
328
- assert(!ccan_list_empty(h));
329
- ccan_list_del(n);
330
- }
331
-
332
- /**
333
- * ccan_list_swap - swap out an entry from an (unknown) linked list for a new one.
334
- * @o: the ccan_list_node to replace from the list.
335
- * @n: the ccan_list_node to insert in place of the old one.
336
- *
337
- * Note that this leaves @o in an undefined state; it can be added to
338
- * another list, but not deleted/swapped again.
339
- *
340
- * See also:
341
- * ccan_list_del()
342
- *
343
- * Example:
344
- * struct child x1, x2;
345
- * CCAN_LIST_HEAD(xh);
346
- *
347
- * ccan_list_add(&xh, &x1.list);
348
- * ccan_list_swap(&x1.list, &x2.list);
349
- */
350
- #define ccan_list_swap(o, n) ccan_list_swap_(o, n, CCAN_LIST_LOC)
351
- static inline void ccan_list_swap_(struct ccan_list_node *o,
352
- struct ccan_list_node *n,
353
- const char* abortstr)
354
- {
355
- (void)ccan_list_debug_node(o, abortstr);
356
- *n = *o;
357
- n->next->prev = n;
358
- n->prev->next = n;
359
- #ifdef CCAN_LIST_DEBUG
360
- /* Catch use-after-del. */
361
- o->next = o->prev = NULL;
362
- #endif
363
- }
364
-
365
- /**
366
- * ccan_list_entry - convert a ccan_list_node back into the structure containing it.
367
- * @n: the ccan_list_node
368
- * @type: the type of the entry
369
- * @member: the ccan_list_node member of the type
370
- *
371
- * Example:
372
- * // First list entry is children.next; convert back to child.
373
- * child = ccan_list_entry(parent->children.n.next, struct child, list);
374
- *
375
- * See Also:
376
- * ccan_list_top(), ccan_list_for_each()
377
- */
378
- #define ccan_list_entry(n, type, member) ccan_container_of(n, type, member)
379
-
380
- /**
381
- * ccan_list_top - get the first entry in a list
382
- * @h: the ccan_list_head
383
- * @type: the type of the entry
384
- * @member: the ccan_list_node member of the type
385
- *
386
- * If the list is empty, returns NULL.
387
- *
388
- * Example:
389
- * struct child *first;
390
- * first = ccan_list_top(&parent->children, struct child, list);
391
- * if (!first)
392
- * printf("Empty list!\n");
393
- */
394
- #define ccan_list_top(h, type, member) \
395
- ((type *)ccan_list_top_((h), ccan_list_off_(type, member)))
396
-
397
- static inline const void *ccan_list_top_(const struct ccan_list_head *h, size_t off)
398
- {
399
- if (ccan_list_empty(h))
400
- return NULL;
401
- return (const char *)h->n.next - off;
402
- }
403
-
404
- /**
405
- * ccan_list_pop - remove the first entry in a list
406
- * @h: the ccan_list_head
407
- * @type: the type of the entry
408
- * @member: the ccan_list_node member of the type
409
- *
410
- * If the list is empty, returns NULL.
411
- *
412
- * Example:
413
- * struct child *one;
414
- * one = ccan_list_pop(&parent->children, struct child, list);
415
- * if (!one)
416
- * printf("Empty list!\n");
417
- */
418
- #define ccan_list_pop(h, type, member) \
419
- ((type *)ccan_list_pop_((h), ccan_list_off_(type, member)))
420
-
421
- static inline const void *ccan_list_pop_(const struct ccan_list_head *h, size_t off)
422
- {
423
- struct ccan_list_node *n;
424
-
425
- if (ccan_list_empty(h))
426
- return NULL;
427
- n = h->n.next;
428
- ccan_list_del(n);
429
- return (const char *)n - off;
430
- }
431
-
432
- /**
433
- * ccan_list_tail - get the last entry in a list
434
- * @h: the ccan_list_head
435
- * @type: the type of the entry
436
- * @member: the ccan_list_node member of the type
437
- *
438
- * If the list is empty, returns NULL.
439
- *
440
- * Example:
441
- * struct child *last;
442
- * last = ccan_list_tail(&parent->children, struct child, list);
443
- * if (!last)
444
- * printf("Empty list!\n");
445
- */
446
- #define ccan_list_tail(h, type, member) \
447
- ((type *)ccan_list_tail_((h), ccan_list_off_(type, member)))
448
-
449
- static inline const void *ccan_list_tail_(const struct ccan_list_head *h, size_t off)
450
- {
451
- if (ccan_list_empty(h))
452
- return NULL;
453
- return (const char *)h->n.prev - off;
454
- }
455
-
456
- /**
457
- * ccan_list_for_each - iterate through a list.
458
- * @h: the ccan_list_head (warning: evaluated multiple times!)
459
- * @i: the structure containing the ccan_list_node
460
- * @member: the ccan_list_node member of the structure
461
- *
462
- * This is a convenient wrapper to iterate @i over the entire list. It's
463
- * a for loop, so you can break and continue as normal.
464
- *
465
- * Example:
466
- * ccan_list_for_each(&parent->children, child, list)
467
- * printf("Name: %s\n", child->name);
468
- */
469
- #define ccan_list_for_each(h, i, member) \
470
- ccan_list_for_each_off(h, i, ccan_list_off_var_(i, member))
471
-
472
- /**
473
- * ccan_list_for_each_rev - iterate through a list backwards.
474
- * @h: the ccan_list_head
475
- * @i: the structure containing the ccan_list_node
476
- * @member: the ccan_list_node member of the structure
477
- *
478
- * This is a convenient wrapper to iterate @i over the entire list. It's
479
- * a for loop, so you can break and continue as normal.
480
- *
481
- * Example:
482
- * ccan_list_for_each_rev(&parent->children, child, list)
483
- * printf("Name: %s\n", child->name);
484
- */
485
- #define ccan_list_for_each_rev(h, i, member) \
486
- ccan_list_for_each_rev_off(h, i, ccan_list_off_var_(i, member))
487
-
488
- /**
489
- * ccan_list_for_each_rev_safe - iterate through a list backwards,
490
- * maybe during deletion
491
- * @h: the ccan_list_head
492
- * @i: the structure containing the ccan_list_node
493
- * @nxt: the structure containing the ccan_list_node
494
- * @member: the ccan_list_node member of the structure
495
- *
496
- * This is a convenient wrapper to iterate @i over the entire list backwards.
497
- * It's a for loop, so you can break and continue as normal. The extra
498
- * variable * @nxt is used to hold the next element, so you can delete @i
499
- * from the list.
500
- *
501
- * Example:
502
- * struct child *next;
503
- * ccan_list_for_each_rev_safe(&parent->children, child, next, list) {
504
- * printf("Name: %s\n", child->name);
505
- * }
506
- */
507
- #define ccan_list_for_each_rev_safe(h, i, nxt, member) \
508
- ccan_list_for_each_rev_safe_off(h, i, nxt, ccan_list_off_var_(i, member))
509
-
510
- /**
511
- * ccan_list_for_each_safe - iterate through a list, maybe during deletion
512
- * @h: the ccan_list_head
513
- * @i: the structure containing the ccan_list_node
514
- * @nxt: the structure containing the ccan_list_node
515
- * @member: the ccan_list_node member of the structure
516
- *
517
- * This is a convenient wrapper to iterate @i over the entire list. It's
518
- * a for loop, so you can break and continue as normal. The extra variable
519
- * @nxt is used to hold the next element, so you can delete @i from the list.
520
- *
521
- * Example:
522
- * ccan_list_for_each_safe(&parent->children, child, next, list) {
523
- * ccan_list_del(&child->list);
524
- * parent->num_children--;
525
- * }
526
- */
527
- #define ccan_list_for_each_safe(h, i, nxt, member) \
528
- ccan_list_for_each_safe_off(h, i, nxt, ccan_list_off_var_(i, member))
529
-
530
- /**
531
- * ccan_list_next - get the next entry in a list
532
- * @h: the ccan_list_head
533
- * @i: a pointer to an entry in the list.
534
- * @member: the ccan_list_node member of the structure
535
- *
536
- * If @i was the last entry in the list, returns NULL.
537
- *
538
- * Example:
539
- * struct child *second;
540
- * second = ccan_list_next(&parent->children, first, list);
541
- * if (!second)
542
- * printf("No second child!\n");
543
- */
544
- #define ccan_list_next(h, i, member) \
545
- ((ccan_list_typeof(i))ccan_list_entry_or_null(ccan_list_debug(h, \
546
- __FILE__ ":" ccan_stringify(__LINE__)), \
547
- (i)->member.next, \
548
- ccan_list_off_var_((i), member)))
549
-
550
- /**
551
- * ccan_list_prev - get the previous entry in a list
552
- * @h: the ccan_list_head
553
- * @i: a pointer to an entry in the list.
554
- * @member: the ccan_list_node member of the structure
555
- *
556
- * If @i was the first entry in the list, returns NULL.
557
- *
558
- * Example:
559
- * first = ccan_list_prev(&parent->children, second, list);
560
- * if (!first)
561
- * printf("Can't go back to first child?!\n");
562
- */
563
- #define ccan_list_prev(h, i, member) \
564
- ((ccan_list_typeof(i))ccan_list_entry_or_null(ccan_list_debug(h, \
565
- __FILE__ ":" ccan_stringify(__LINE__)), \
566
- (i)->member.prev, \
567
- ccan_list_off_var_((i), member)))
568
-
569
- /**
570
- * ccan_list_append_list - empty one list onto the end of another.
571
- * @to: the list to append into
572
- * @from: the list to empty.
573
- *
574
- * This takes the entire contents of @from and moves it to the end of
575
- * @to. After this @from will be empty.
576
- *
577
- * Example:
578
- * struct ccan_list_head adopter;
579
- *
580
- * ccan_list_append_list(&adopter, &parent->children);
581
- * assert(ccan_list_empty(&parent->children));
582
- * parent->num_children = 0;
583
- */
584
- #define ccan_list_append_list(t, f) ccan_list_append_list_(t, f, \
585
- __FILE__ ":" ccan_stringify(__LINE__))
586
- static inline void ccan_list_append_list_(struct ccan_list_head *to,
587
- struct ccan_list_head *from,
588
- const char *abortstr)
589
- {
590
- struct ccan_list_node *from_tail = ccan_list_debug(from, abortstr)->n.prev;
591
- struct ccan_list_node *to_tail = ccan_list_debug(to, abortstr)->n.prev;
592
-
593
- /* Sew in head and entire list. */
594
- to->n.prev = from_tail;
595
- from_tail->next = &to->n;
596
- to_tail->next = &from->n;
597
- from->n.prev = to_tail;
598
-
599
- /* Now remove head. */
600
- ccan_list_del(&from->n);
601
- ccan_list_head_init(from);
602
- }
603
-
604
- /**
605
- * ccan_list_prepend_list - empty one list into the start of another.
606
- * @to: the list to prepend into
607
- * @from: the list to empty.
608
- *
609
- * This takes the entire contents of @from and moves it to the start
610
- * of @to. After this @from will be empty.
611
- *
612
- * Example:
613
- * ccan_list_prepend_list(&adopter, &parent->children);
614
- * assert(ccan_list_empty(&parent->children));
615
- * parent->num_children = 0;
616
- */
617
- #define ccan_list_prepend_list(t, f) ccan_list_prepend_list_(t, f, CCAN_LIST_LOC)
618
- static inline void ccan_list_prepend_list_(struct ccan_list_head *to,
619
- struct ccan_list_head *from,
620
- const char *abortstr)
621
- {
622
- struct ccan_list_node *from_tail = ccan_list_debug(from, abortstr)->n.prev;
623
- struct ccan_list_node *to_head = ccan_list_debug(to, abortstr)->n.next;
624
-
625
- /* Sew in head and entire list. */
626
- to->n.next = &from->n;
627
- from->n.prev = &to->n;
628
- to_head->prev = from_tail;
629
- from_tail->next = to_head;
630
-
631
- /* Now remove head. */
632
- ccan_list_del(&from->n);
633
- ccan_list_head_init(from);
634
- }
635
-
636
- /* internal macros, do not use directly */
637
- #define ccan_list_for_each_off_dir_(h, i, off, dir) \
638
- for (i = 0, \
639
- i = ccan_list_node_to_off_(ccan_list_debug(h, CCAN_LIST_LOC)->n.dir, \
640
- (off)); \
641
- ccan_list_node_from_off_((void *)i, (off)) != &(h)->n; \
642
- i = ccan_list_node_to_off_(ccan_list_node_from_off_((void *)i, (off))->dir, \
643
- (off)))
644
-
645
- #define ccan_list_for_each_safe_off_dir_(h, i, nxt, off, dir) \
646
- for (i = 0, \
647
- i = ccan_list_node_to_off_(ccan_list_debug(h, CCAN_LIST_LOC)->n.dir, \
648
- (off)), \
649
- nxt = ccan_list_node_to_off_(ccan_list_node_from_off_(i, (off))->dir, \
650
- (off)); \
651
- ccan_list_node_from_off_(i, (off)) != &(h)->n; \
652
- i = nxt, \
653
- nxt = ccan_list_node_to_off_(ccan_list_node_from_off_(i, (off))->dir, \
654
- (off)))
655
-
656
- /**
657
- * ccan_list_for_each_off - iterate through a list of memory regions.
658
- * @h: the ccan_list_head
659
- * @i: the pointer to a memory region which contains list node data.
660
- * @off: offset(relative to @i) at which list node data resides.
661
- *
662
- * This is a low-level wrapper to iterate @i over the entire list, used to
663
- * implement all other, more high-level, for-each constructs. It's a for loop,
664
- * so you can break and continue as normal.
665
- *
666
- * WARNING! Being the low-level macro that it is, this wrapper doesn't know
667
- * nor care about the type of @i. The only assumption made is that @i points
668
- * to a chunk of memory that at some @offset, relative to @i, contains a
669
- * properly filled `struct ccan_list_node' which in turn contains pointers to
670
- * memory chunks and it's turtles all the way down. With all that in mind
671
- * remember that given the wrong pointer/offset couple this macro will
672
- * happily churn all you memory until SEGFAULT stops it, in other words
673
- * caveat emptor.
674
- *
675
- * It is worth mentioning that one of legitimate use-cases for that wrapper
676
- * is operation on opaque types with known offset for `struct ccan_list_node'
677
- * member(preferably 0), because it allows you not to disclose the type of
678
- * @i.
679
- *
680
- * Example:
681
- * ccan_list_for_each_off(&parent->children, child,
682
- * offsetof(struct child, list))
683
- * printf("Name: %s\n", child->name);
684
- */
685
- #define ccan_list_for_each_off(h, i, off) \
686
- ccan_list_for_each_off_dir_((h),(i),(off),next)
687
-
688
- /**
689
- * ccan_list_for_each_rev_off - iterate through a list of memory regions backwards
690
- * @h: the ccan_list_head
691
- * @i: the pointer to a memory region which contains list node data.
692
- * @off: offset(relative to @i) at which list node data resides.
693
- *
694
- * See ccan_list_for_each_off for details
695
- */
696
- #define ccan_list_for_each_rev_off(h, i, off) \
697
- ccan_list_for_each_off_dir_((h),(i),(off),prev)
698
-
699
- /**
700
- * ccan_list_for_each_safe_off - iterate through a list of memory regions, maybe
701
- * during deletion
702
- * @h: the ccan_list_head
703
- * @i: the pointer to a memory region which contains list node data.
704
- * @nxt: the structure containing the ccan_list_node
705
- * @off: offset(relative to @i) at which list node data resides.
706
- *
707
- * For details see `ccan_list_for_each_off' and `ccan_list_for_each_safe'
708
- * descriptions.
709
- *
710
- * Example:
711
- * ccan_list_for_each_safe_off(&parent->children, child,
712
- * next, offsetof(struct child, list))
713
- * printf("Name: %s\n", child->name);
714
- */
715
- #define ccan_list_for_each_safe_off(h, i, nxt, off) \
716
- ccan_list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
717
-
718
- /**
719
- * ccan_list_for_each_rev_safe_off - iterate backwards through a list of
720
- * memory regions, maybe during deletion
721
- * @h: the ccan_list_head
722
- * @i: the pointer to a memory region which contains list node data.
723
- * @nxt: the structure containing the ccan_list_node
724
- * @off: offset(relative to @i) at which list node data resides.
725
- *
726
- * For details see `ccan_list_for_each_rev_off' and `ccan_list_for_each_rev_safe'
727
- * descriptions.
728
- *
729
- * Example:
730
- * ccan_list_for_each_rev_safe_off(&parent->children, child,
731
- * next, offsetof(struct child, list))
732
- * printf("Name: %s\n", child->name);
733
- */
734
- #define ccan_list_for_each_rev_safe_off(h, i, nxt, off) \
735
- ccan_list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
736
-
737
- /* Other -off variants. */
738
- #define ccan_list_entry_off(n, type, off) \
739
- ((type *)ccan_list_node_from_off_((n), (off)))
740
-
741
- #define ccan_list_head_off(h, type, off) \
742
- ((type *)ccan_list_head_off((h), (off)))
743
-
744
- #define ccan_list_tail_off(h, type, off) \
745
- ((type *)ccan_list_tail_((h), (off)))
746
-
747
- #define ccan_list_add_off(h, n, off) \
748
- ccan_list_add((h), ccan_list_node_from_off_((n), (off)))
749
-
750
- #define ccan_list_del_off(n, off) \
751
- ccan_list_del(ccan_list_node_from_off_((n), (off)))
752
-
753
- #define ccan_list_del_from_off(h, n, off) \
754
- ccan_list_del_from(h, ccan_list_node_from_off_((n), (off)))
755
-
756
- /* Offset helper functions so we only single-evaluate. */
757
- static inline void *ccan_list_node_to_off_(struct ccan_list_node *node, size_t off)
758
- {
759
- return (void *)((char *)node - off);
760
- }
761
- static inline struct ccan_list_node *ccan_list_node_from_off_(void *ptr, size_t off)
762
- {
763
- return (struct ccan_list_node *)((char *)ptr + off);
764
- }
765
-
766
- /* Get the offset of the member, but make sure it's a ccan_list_node. */
767
- #define ccan_list_off_(type, member) \
768
- (ccan_container_off(type, member) + \
769
- ccan_check_type(((type *)0)->member, struct ccan_list_node))
770
-
771
- #define ccan_list_off_var_(var, member) \
772
- (ccan_container_off_var(var, member) + \
773
- ccan_check_type(var->member, struct ccan_list_node))
774
-
775
- #if defined(HAVE_TYPEOF) && HAVE_TYPEOF
776
- #define ccan_list_typeof(var) typeof(var)
777
- #else
778
- #define ccan_list_typeof(var) void *
779
- #endif
780
-
781
- /* Returns member, or NULL if at end of list. */
782
- static inline void *ccan_list_entry_or_null(const struct ccan_list_head *h,
783
- const struct ccan_list_node *n,
784
- size_t off)
785
- {
786
- if (n == &h->n)
787
- return NULL;
788
- return (char *)n - off;
789
- }
790
-
791
- #endif /* CCAN_LIST_H */