esruby 0.0.0

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 (763) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +22 -0
  4. data/bin/esruby +34 -0
  5. data/lib/esruby.rb +26 -0
  6. data/lib/esruby/build.rb +140 -0
  7. data/lib/esruby/build/configuration.rb +77 -0
  8. data/lib/esruby/gem.rb +5 -0
  9. data/lib/esruby/gem/specification.rb +35 -0
  10. data/resources/build_config.eruby +53 -0
  11. data/resources/cpp/esruby.cpp +64 -0
  12. data/resources/cpp/esruby.hpp +42 -0
  13. data/resources/cpp/main.cpp +9 -0
  14. data/resources/js/esruby.js +45 -0
  15. data/resources/mruby/AUTHORS +40 -0
  16. data/resources/mruby/CONTRIBUTING.md +68 -0
  17. data/resources/mruby/LEGAL +6 -0
  18. data/resources/mruby/MITL +20 -0
  19. data/resources/mruby/Makefile +17 -0
  20. data/resources/mruby/NEWS +13 -0
  21. data/resources/mruby/README.md +92 -0
  22. data/resources/mruby/Rakefile +152 -0
  23. data/resources/mruby/TODO +10 -0
  24. data/resources/mruby/appveyor.yml +38 -0
  25. data/resources/mruby/appveyor_config.rb +50 -0
  26. data/resources/mruby/benchmark/bm_ao_render.rb +314 -0
  27. data/resources/mruby/benchmark/bm_app_lc_fizzbuzz.rb +52 -0
  28. data/resources/mruby/benchmark/bm_fib.rb +7 -0
  29. data/resources/mruby/benchmark/bm_so_lists.rb +47 -0
  30. data/resources/mruby/benchmark/build_config_boxing.rb +28 -0
  31. data/resources/mruby/benchmark/build_config_cc.rb +13 -0
  32. data/resources/mruby/benchmark/plot.gpl +5 -0
  33. data/resources/mruby/bin/mirb +0 -0
  34. data/resources/mruby/bin/mrbc +0 -0
  35. data/resources/mruby/bin/mruby +0 -0
  36. data/resources/mruby/bin/mruby-strip +0 -0
  37. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/README.md +82 -0
  38. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrbgem.rake +63 -0
  39. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/regexp_pcre.rb +232 -0
  40. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/mrblib/string_pcre.rb +333 -0
  41. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/132html +313 -0
  42. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/AUTHORS +45 -0
  43. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CMakeLists.txt +959 -0
  44. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/COPYING +5 -0
  45. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ChangeLog +4981 -0
  46. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CheckMan +67 -0
  47. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/CleanTxt +113 -0
  48. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Detrail +35 -0
  49. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/HACKING +473 -0
  50. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/INSTALL +370 -0
  51. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/LICENCE +92 -0
  52. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.am +877 -0
  53. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/Makefile.in +2917 -0
  54. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NEWS +611 -0
  55. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-AUTOTOOLS-BUILD +639 -0
  56. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/NON-UNIX-USE +7 -0
  57. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/PrepareRelease +253 -0
  58. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/README +935 -0
  59. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunGrepTest +551 -0
  60. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest +1015 -0
  61. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/RunTest.bat +616 -0
  62. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/aclocal.m4 +1230 -0
  63. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.0 +21280 -0
  64. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/output.1 +21280 -0
  65. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/requests +273 -0
  66. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.0 +2421 -0
  67. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/autom4te.cache/traces.1 +1144 -0
  68. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
  69. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindEditline.cmake +17 -0
  70. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
  71. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/cmake/FindReadline.cmake +29 -0
  72. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/compile +343 -0
  73. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config-cmake.h.in +54 -0
  74. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.guess +1552 -0
  75. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h +392 -0
  76. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.generic +392 -0
  77. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.h.in +343 -0
  78. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/config.sub +1804 -0
  79. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure +21280 -0
  80. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/configure.ac +1082 -0
  81. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/depcomp +708 -0
  82. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/dftables.c +212 -0
  83. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/index.html +180 -0
  84. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre-config.html +109 -0
  85. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre.html +204 -0
  86. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre16.html +383 -0
  87. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_assign_jit_stack.html +76 -0
  88. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile.html +108 -0
  89. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_compile2.html +112 -0
  90. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_config.html +91 -0
  91. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_named_substring.html +65 -0
  92. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_copy_substring.html +61 -0
  93. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_dfa_exec.html +128 -0
  94. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_exec.html +110 -0
  95. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_study.html +46 -0
  96. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring.html +46 -0
  97. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_free_substring_list.html +46 -0
  98. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_fullinfo.html +108 -0
  99. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_named_substring.html +68 -0
  100. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringnumber.html +57 -0
  101. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_stringtable_entries.html +60 -0
  102. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring.html +64 -0
  103. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_get_substring_list.html +61 -0
  104. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_exec.html +108 -0
  105. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_alloc.html +55 -0
  106. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_jit_stack_free.html +48 -0
  107. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_maketables.html +48 -0
  108. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_pattern_to_host_byte_order.html +58 -0
  109. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_refcount.html +51 -0
  110. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_study.html +68 -0
  111. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_utf16_to_host_byte_order.html +57 -0
  112. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcre_version.html +46 -0
  113. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreapi.html +2786 -0
  114. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrebuild.html +517 -0
  115. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecallout.html +243 -0
  116. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecompat.html +216 -0
  117. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrecpp.html +368 -0
  118. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcredemo.html +426 -0
  119. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcregrep.html +757 -0
  120. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrejit.html +458 -0
  121. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrelimits.html +86 -0
  122. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrematching.html +233 -0
  123. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepartial.html +474 -0
  124. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrepattern.html +2953 -0
  125. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreperform.html +195 -0
  126. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreposix.html +292 -0
  127. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreprecompile.html +158 -0
  128. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresample.html +110 -0
  129. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcrestack.html +225 -0
  130. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcresyntax.html +521 -0
  131. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcretest.html +1082 -0
  132. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/html/pcreunicode.html +270 -0
  133. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/index.html.src +180 -0
  134. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.1 +92 -0
  135. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre-config.txt +86 -0
  136. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.3 +202 -0
  137. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre.txt +9909 -0
  138. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre16.3 +390 -0
  139. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre32.3 +389 -0
  140. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_assign_jit_stack.3 +61 -0
  141. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile.3 +98 -0
  142. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_compile2.3 +106 -0
  143. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_config.3 +76 -0
  144. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_named_substring.3 +59 -0
  145. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_copy_substring.3 +52 -0
  146. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_dfa_exec.3 +125 -0
  147. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_exec.3 +103 -0
  148. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_study.3 +31 -0
  149. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring.3 +31 -0
  150. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_free_substring_list.3 +31 -0
  151. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_fullinfo.3 +95 -0
  152. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_named_substring.3 +62 -0
  153. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringnumber.3 +45 -0
  154. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_stringtable_entries.3 +48 -0
  155. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring.3 +55 -0
  156. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_get_substring_list.3 +49 -0
  157. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_exec.3 +104 -0
  158. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_alloc.3 +45 -0
  159. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_jit_stack_free.3 +35 -0
  160. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_maketables.3 +33 -0
  161. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_pattern_to_host_byte_order.3 +46 -0
  162. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_refcount.3 +36 -0
  163. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_study.3 +56 -0
  164. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf16_to_host_byte_order.3 +46 -0
  165. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_utf32_to_host_byte_order.3 +46 -0
  166. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcre_version.3 +31 -0
  167. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreapi.3 +2823 -0
  168. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrebuild.3 +520 -0
  169. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecallout.3 +214 -0
  170. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecompat.3 +185 -0
  171. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrecpp.3 +348 -0
  172. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.1 +679 -0
  173. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcregrep.txt +740 -0
  174. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrejit.3 +437 -0
  175. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrelimits.3 +67 -0
  176. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrematching.3 +206 -0
  177. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepartial.3 +445 -0
  178. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrepattern.3 +2983 -0
  179. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreperform.3 +177 -0
  180. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreposix.3 +270 -0
  181. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreprecompile.3 +151 -0
  182. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresample.3 +99 -0
  183. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcrestack.3 +215 -0
  184. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcresyntax.3 +496 -0
  185. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.1 +1079 -0
  186. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcretest.txt +1012 -0
  187. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/pcreunicode.3 +255 -0
  188. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/doc/perltest.txt +42 -0
  189. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/install-sh +527 -0
  190. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre.pc.in +12 -0
  191. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre16.pc.in +12 -0
  192. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcre32.pc.in +12 -0
  193. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcrecpp.pc.in +12 -0
  194. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/libpcreposix.pc.in +13 -0
  195. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ltmain.sh +9636 -0
  196. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ax_pthread.m4 +309 -0
  197. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/libtool.m4 +7844 -0
  198. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltoptions.m4 +369 -0
  199. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltsugar.m4 +123 -0
  200. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/ltversion.m4 +23 -0
  201. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/lt~obsolete.m4 +98 -0
  202. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/m4/pcre_visibility.m4 +89 -0
  203. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp.bat +66 -0
  204. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_c.txt +20 -0
  205. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/makevp_l.txt +20 -0
  206. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/missing +331 -0
  207. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre-config.in +133 -0
  208. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h +653 -0
  209. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.generic +653 -0
  210. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre.h.in +653 -0
  211. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_byte_order.c +45 -0
  212. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_chartables.c +45 -0
  213. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_compile.c +45 -0
  214. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_config.c +45 -0
  215. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_dfa_exec.c +45 -0
  216. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_exec.c +45 -0
  217. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_fullinfo.c +45 -0
  218. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_get.c +45 -0
  219. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_globals.c +45 -0
  220. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_jit_compile.c +45 -0
  221. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_maketables.c +45 -0
  222. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_newline.c +45 -0
  223. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ord2utf16.c +90 -0
  224. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_printint.c +45 -0
  225. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_refcount.c +45 -0
  226. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_string_utils.c +45 -0
  227. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_study.c +45 -0
  228. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_tables.c +45 -0
  229. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_ucd.c +45 -0
  230. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_utf16_utils.c +130 -0
  231. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_valid_utf16.c +156 -0
  232. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_version.c +45 -0
  233. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre16_xclass.c +45 -0
  234. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_byte_order.c +45 -0
  235. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_chartables.c +45 -0
  236. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_compile.c +45 -0
  237. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_config.c +45 -0
  238. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_dfa_exec.c +45 -0
  239. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_exec.c +45 -0
  240. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_fullinfo.c +45 -0
  241. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_get.c +45 -0
  242. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_globals.c +45 -0
  243. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_jit_compile.c +45 -0
  244. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_maketables.c +45 -0
  245. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_newline.c +45 -0
  246. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ord2utf32.c +82 -0
  247. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_printint.c +45 -0
  248. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_refcount.c +45 -0
  249. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_string_utils.c +45 -0
  250. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_study.c +45 -0
  251. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_tables.c +45 -0
  252. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_ucd.c +45 -0
  253. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_utf32_utils.c +141 -0
  254. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_valid_utf32.c +131 -0
  255. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_version.c +45 -0
  256. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre32_xclass.c +45 -0
  257. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_byte_order.c +318 -0
  258. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c +198 -0
  259. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_chartables.c.dist +198 -0
  260. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_compile.c +8386 -0
  261. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_config.c +186 -0
  262. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_dfa_exec.c +3582 -0
  263. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_exec.c +7049 -0
  264. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_fullinfo.c +231 -0
  265. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_get.c +662 -0
  266. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_globals.c +84 -0
  267. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_internal.h +2744 -0
  268. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_compile.c +8560 -0
  269. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_jit_test.c +1614 -0
  270. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_maketables.c +151 -0
  271. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_newline.c +210 -0
  272. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ord2utf8.c +94 -0
  273. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_printint.c +766 -0
  274. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_refcount.c +92 -0
  275. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.cc +199 -0
  276. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner.h +172 -0
  277. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_scanner_unittest.cc +159 -0
  278. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_string_utils.c +211 -0
  279. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.cc +43 -0
  280. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece.h.in +179 -0
  281. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_stringpiece_unittest.cc +150 -0
  282. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_study.c +1562 -0
  283. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_tables.c +655 -0
  284. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_ucd.c +3298 -0
  285. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_valid_utf8.c +312 -0
  286. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_version.c +98 -0
  287. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcre_xclass.c +198 -0
  288. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.cc +922 -0
  289. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp.h +710 -0
  290. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_internal.h +71 -0
  291. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpp_unittest.cc +1291 -0
  292. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcrecpparg.h.in +174 -0
  293. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcredemo.c +406 -0
  294. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregexp.pas +845 -0
  295. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcregrep.c +3180 -0
  296. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.c +419 -0
  297. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcreposix.h +146 -0
  298. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/pcretest.c +5488 -0
  299. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/perltest.pl +237 -0
  300. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfig.h +110 -0
  301. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitConfigInternal.h +484 -0
  302. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitExecAllocator.c +289 -0
  303. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.c +1766 -0
  304. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitLir.h +985 -0
  305. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_Thumb2.c +2008 -0
  306. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeARM_v5.c +2515 -0
  307. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_32.c +404 -0
  308. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeMIPS_common.c +1881 -0
  309. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_32.c +269 -0
  310. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_64.c +421 -0
  311. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativePPC_common.c +2014 -0
  312. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_32.c +164 -0
  313. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeSPARC_common.c +1348 -0
  314. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_32.c +547 -0
  315. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_64.c +810 -0
  316. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitNativeX86_common.c +2836 -0
  317. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/sljit/sljitUtils.c +332 -0
  318. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepbinary +0 -0
  319. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepfilelist +3 -0
  320. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput +611 -0
  321. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput3 +15 -0
  322. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinput8 +11 -0
  323. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputv +4 -0
  324. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepinputx +43 -0
  325. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greplist +7 -0
  326. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput +707 -0
  327. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutput8 +12 -0
  328. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/grepoutputN +16 -1
  329. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/greppatN4 +2 -0
  330. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16 +0 -0
  331. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-1 +0 -0
  332. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16BE-2 +0 -0
  333. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-1 +0 -0
  334. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved16LE-2 +0 -0
  335. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32 +0 -0
  336. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-1 +0 -0
  337. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32BE-2 +0 -0
  338. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-1 +0 -0
  339. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved32LE-2 +0 -0
  340. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/saved8 +0 -0
  341. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput1 +5306 -0
  342. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput10 +1337 -0
  343. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput11 +135 -0
  344. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput12 +89 -0
  345. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput13 +9 -0
  346. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput14 +329 -0
  347. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput15 +430 -0
  348. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput16 +35 -0
  349. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput17 +296 -0
  350. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput18 +296 -0
  351. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput19 +22 -0
  352. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput2 +3813 -0
  353. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput20 +19 -0
  354. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput21 +16 -0
  355. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput22 +13 -0
  356. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput23 +16 -0
  357. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput24 +77 -0
  358. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput25 +32 -0
  359. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput26 +80 -0
  360. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput3 +95 -0
  361. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput4 +624 -0
  362. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput5 +772 -0
  363. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput6 +1319 -0
  364. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput7 +672 -0
  365. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput8 +4801 -0
  366. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinput9 +717 -0
  367. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testinputEBC +121 -0
  368. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput1 +8798 -0
  369. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput10 +2726 -0
  370. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-16 +713 -0
  371. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-32 +713 -0
  372. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput11-8 +713 -0
  373. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput12 +181 -0
  374. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput13 +21 -0
  375. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput14 +476 -0
  376. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput15 +1269 -0
  377. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput16 +121 -0
  378. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput17 +505 -0
  379. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-16 +1022 -0
  380. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput18-32 +1019 -0
  381. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput19 +88 -0
  382. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput2 +12484 -0
  383. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput20 +27 -0
  384. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-16 +90 -0
  385. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput21-32 +90 -0
  386. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-16 +71 -0
  387. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput22-32 +71 -0
  388. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput23 +42 -0
  389. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput24 +145 -0
  390. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput25 +79 -0
  391. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput26 +148 -0
  392. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput3 +169 -0
  393. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput4 +1094 -0
  394. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput5 +1849 -0
  395. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput6 +2137 -0
  396. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput7 +1473 -0
  397. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput8 +8019 -0
  398. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutput9 +1371 -0
  399. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/testoutputEBC +182 -0
  400. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestinput3 +91 -0
  401. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/testdata/wintestoutput3 +166 -0
  402. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/pcre/ucp.h +197 -0
  403. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/run_test.rb +23 -0
  404. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/src/mruby_regexp_pcre.c +364 -0
  405. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/matchdata.rb +94 -0
  406. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/regexp.rb +264 -0
  407. data/resources/mruby/build/mrbgems/mruby-regexp-pcre/test/string.rb +201 -0
  408. data/resources/mruby/build_config.rb +152 -0
  409. data/resources/mruby/doc/guides/compile.md +488 -0
  410. data/resources/mruby/doc/guides/debugger.md +370 -0
  411. data/resources/mruby/doc/guides/gc-arena-howto.md +177 -0
  412. data/resources/mruby/doc/guides/mrbconf.md +146 -0
  413. data/resources/mruby/doc/guides/mrbgems.md +340 -0
  414. data/resources/mruby/doc/limitations.md +187 -0
  415. data/resources/mruby/examples/mrbgems/c_and_ruby_extension_example/README.md +4 -0
  416. data/resources/mruby/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake +23 -0
  417. data/resources/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +5 -0
  418. data/resources/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +20 -0
  419. data/resources/mruby/examples/mrbgems/c_and_ruby_extension_example/test/example.rb +7 -0
  420. data/resources/mruby/examples/mrbgems/c_extension_example/README.md +4 -0
  421. data/resources/mruby/examples/mrbgems/c_extension_example/mrbgem.rake +23 -0
  422. data/resources/mruby/examples/mrbgems/c_extension_example/src/example.c +20 -0
  423. data/resources/mruby/examples/mrbgems/c_extension_example/test/example.c +7 -0
  424. data/resources/mruby/examples/mrbgems/c_extension_example/test/example.rb +3 -0
  425. data/resources/mruby/examples/mrbgems/ruby_extension_example/README.md +4 -0
  426. data/resources/mruby/examples/mrbgems/ruby_extension_example/mrbgem.rake +25 -0
  427. data/resources/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +5 -0
  428. data/resources/mruby/examples/mrbgems/ruby_extension_example/test/example.rb +3 -0
  429. data/resources/mruby/examples/targets/build_config_ArduinoDue.rb +90 -0
  430. data/resources/mruby/examples/targets/build_config_IntelEdison.rb +69 -0
  431. data/resources/mruby/examples/targets/build_config_IntelGalileo.rb +106 -0
  432. data/resources/mruby/examples/targets/build_config_RX630.rb +81 -0
  433. data/resources/mruby/examples/targets/build_config_android_arm64-v8a.rb +26 -0
  434. data/resources/mruby/examples/targets/build_config_android_armeabi.rb +26 -0
  435. data/resources/mruby/examples/targets/build_config_android_armeabi_v7a_neon_hard.rb +28 -0
  436. data/resources/mruby/examples/targets/build_config_chipKITMax32.rb +86 -0
  437. data/resources/mruby/include/mrbconf.h +145 -0
  438. data/resources/mruby/include/mruby.h +1280 -0
  439. data/resources/mruby/include/mruby/array.h +279 -0
  440. data/resources/mruby/include/mruby/boxing_nan.h +102 -0
  441. data/resources/mruby/include/mruby/boxing_no.h +56 -0
  442. data/resources/mruby/include/mruby/boxing_word.h +136 -0
  443. data/resources/mruby/include/mruby/class.h +94 -0
  444. data/resources/mruby/include/mruby/common.h +72 -0
  445. data/resources/mruby/include/mruby/compile.h +194 -0
  446. data/resources/mruby/include/mruby/data.h +75 -0
  447. data/resources/mruby/include/mruby/debug.h +66 -0
  448. data/resources/mruby/include/mruby/dump.h +196 -0
  449. data/resources/mruby/include/mruby/error.h +75 -0
  450. data/resources/mruby/include/mruby/gc.h +91 -0
  451. data/resources/mruby/include/mruby/hash.h +182 -0
  452. data/resources/mruby/include/mruby/irep.h +62 -0
  453. data/resources/mruby/include/mruby/istruct.h +47 -0
  454. data/resources/mruby/include/mruby/khash.h +274 -0
  455. data/resources/mruby/include/mruby/numeric.h +161 -0
  456. data/resources/mruby/include/mruby/object.h +45 -0
  457. data/resources/mruby/include/mruby/opcode.h +161 -0
  458. data/resources/mruby/include/mruby/proc.h +131 -0
  459. data/resources/mruby/include/mruby/range.h +49 -0
  460. data/resources/mruby/include/mruby/re.h +16 -0
  461. data/resources/mruby/include/mruby/string.h +440 -0
  462. data/resources/mruby/include/mruby/throw.h +55 -0
  463. data/resources/mruby/include/mruby/value.h +309 -0
  464. data/resources/mruby/include/mruby/variable.h +138 -0
  465. data/resources/mruby/include/mruby/version.h +110 -0
  466. data/resources/mruby/lib/mruby-core-ext.rb +79 -0
  467. data/resources/mruby/lib/mruby/build.rb +355 -0
  468. data/resources/mruby/lib/mruby/build/command.rb +324 -0
  469. data/resources/mruby/lib/mruby/build/load_gems.rb +122 -0
  470. data/resources/mruby/lib/mruby/gem.rb +459 -0
  471. data/resources/mruby/lib/mruby/source.rb +30 -0
  472. data/resources/mruby/minirake +484 -0
  473. data/resources/mruby/mrbgems/default.gembox +82 -0
  474. data/resources/mruby/mrbgems/full-core.gembox +9 -0
  475. data/resources/mruby/mrbgems/mruby-array-ext/mrbgem.rake +6 -0
  476. data/resources/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +935 -0
  477. data/resources/mruby/mrbgems/mruby-array-ext/src/array.c +246 -0
  478. data/resources/mruby/mrbgems/mruby-array-ext/test/array.rb +422 -0
  479. data/resources/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +286 -0
  480. data/resources/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +701 -0
  481. data/resources/mruby/mrbgems/mruby-bin-debugger/mrbgem.rake +9 -0
  482. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +505 -0
  483. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.h +26 -0
  484. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c +240 -0
  485. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.h +14 -0
  486. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +78 -0
  487. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.h +13 -0
  488. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c +436 -0
  489. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c +502 -0
  490. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +58 -0
  491. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c +64 -0
  492. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +759 -0
  493. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +165 -0
  494. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +16 -0
  495. data/resources/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdberror.h +20 -0
  496. data/resources/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +12 -0
  497. data/resources/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +33 -0
  498. data/resources/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +611 -0
  499. data/resources/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +16 -0
  500. data/resources/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +336 -0
  501. data/resources/mruby/mrbgems/mruby-bin-mruby-config/mrbgem.rake +30 -0
  502. data/resources/mruby/mrbgems/mruby-bin-mruby-config/mruby-config +20 -0
  503. data/resources/mruby/mrbgems/mruby-bin-mruby-config/mruby-config.bat +42 -0
  504. data/resources/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +60 -0
  505. data/resources/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +12 -0
  506. data/resources/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +254 -0
  507. data/resources/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +73 -0
  508. data/resources/mruby/mrbgems/mruby-bin-strip/mrbgem.rake +6 -0
  509. data/resources/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +155 -0
  510. data/resources/mruby/mrbgems/mruby-class-ext/mrbgem.rake +5 -0
  511. data/resources/mruby/mrbgems/mruby-class-ext/src/class.c +68 -0
  512. data/resources/mruby/mrbgems/mruby-class-ext/test/module.rb +55 -0
  513. data/resources/mruby/mrbgems/mruby-compar-ext/mrbgem.rake +5 -0
  514. data/resources/mruby/mrbgems/mruby-compar-ext/mrblib/compar.rb +31 -0
  515. data/resources/mruby/mrbgems/mruby-compiler/bintest/mrbc.rb +30 -0
  516. data/resources/mruby/mrbgems/mruby-compiler/core/codegen.c +3083 -0
  517. data/resources/mruby/mrbgems/mruby-compiler/core/keywords +50 -0
  518. data/resources/mruby/mrbgems/mruby-compiler/core/lex.def +211 -0
  519. data/resources/mruby/mrbgems/mruby-compiler/core/node.h +118 -0
  520. data/resources/mruby/mrbgems/mruby-compiler/core/parse.y +6661 -0
  521. data/resources/mruby/mrbgems/mruby-compiler/mrbgem.rake +40 -0
  522. data/resources/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +5 -0
  523. data/resources/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +813 -0
  524. data/resources/mruby/mrbgems/mruby-enum-ext/test/enum.rb +185 -0
  525. data/resources/mruby/mrbgems/mruby-enum-lazy/mrbgem.rake +7 -0
  526. data/resources/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb +178 -0
  527. data/resources/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb +53 -0
  528. data/resources/mruby/mrbgems/mruby-enumerator/mrbgem.rake +7 -0
  529. data/resources/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +645 -0
  530. data/resources/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +546 -0
  531. data/resources/mruby/mrbgems/mruby-error/mrbgem.rake +10 -0
  532. data/resources/mruby/mrbgems/mruby-error/src/exception.c +100 -0
  533. data/resources/mruby/mrbgems/mruby-error/test/exception.c +59 -0
  534. data/resources/mruby/mrbgems/mruby-error/test/exception.rb +55 -0
  535. data/resources/mruby/mrbgems/mruby-eval/mrbgem.rake +7 -0
  536. data/resources/mruby/mrbgems/mruby-eval/src/eval.c +346 -0
  537. data/resources/mruby/mrbgems/mruby-eval/test/eval.rb +101 -0
  538. data/resources/mruby/mrbgems/mruby-exit/mrbgem.rake +5 -0
  539. data/resources/mruby/mrbgems/mruby-exit/src/mruby-exit.c +24 -0
  540. data/resources/mruby/mrbgems/mruby-fiber/mrbgem.rake +5 -0
  541. data/resources/mruby/mrbgems/mruby-fiber/src/fiber.c +420 -0
  542. data/resources/mruby/mrbgems/mruby-fiber/test/fiber.rb +208 -0
  543. data/resources/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +8 -0
  544. data/resources/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +502 -0
  545. data/resources/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +128 -0
  546. data/resources/mruby/mrbgems/mruby-hash-ext/test/hash.rb +300 -0
  547. data/resources/mruby/mrbgems/mruby-inline-struct/mrbgem.rake +5 -0
  548. data/resources/mruby/mrbgems/mruby-inline-struct/test/inline.c +83 -0
  549. data/resources/mruby/mrbgems/mruby-inline-struct/test/inline.rb +151 -0
  550. data/resources/mruby/mrbgems/mruby-io/README.md +193 -0
  551. data/resources/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +38 -0
  552. data/resources/mruby/mrbgems/mruby-io/mrbgem.rake +17 -0
  553. data/resources/mruby/mrbgems/mruby-io/mrblib/file.rb +208 -0
  554. data/resources/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +29 -0
  555. data/resources/mruby/mrbgems/mruby-io/mrblib/io.rb +387 -0
  556. data/resources/mruby/mrbgems/mruby-io/mrblib/kernel.rb +15 -0
  557. data/resources/mruby/mrbgems/mruby-io/run_test.rb +26 -0
  558. data/resources/mruby/mrbgems/mruby-io/src/file.c +489 -0
  559. data/resources/mruby/mrbgems/mruby-io/src/file_test.c +381 -0
  560. data/resources/mruby/mrbgems/mruby-io/src/io.c +1320 -0
  561. data/resources/mruby/mrbgems/mruby-io/src/mruby_io_gem.c +20 -0
  562. data/resources/mruby/mrbgems/mruby-io/test/file.rb +197 -0
  563. data/resources/mruby/mrbgems/mruby-io/test/file_test.rb +117 -0
  564. data/resources/mruby/mrbgems/mruby-io/test/gc_filedes.sh +4 -0
  565. data/resources/mruby/mrbgems/mruby-io/test/io.rb +642 -0
  566. data/resources/mruby/mrbgems/mruby-io/test/mruby_io_test.c +256 -0
  567. data/resources/mruby/mrbgems/mruby-kernel-ext/mrbgem.rake +5 -0
  568. data/resources/mruby/mrbgems/mruby-kernel-ext/mrblib/kernel.rb +13 -0
  569. data/resources/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +264 -0
  570. data/resources/mruby/mrbgems/mruby-kernel-ext/test/kernel.rb +86 -0
  571. data/resources/mruby/mrbgems/mruby-math/mrbgem.rake +5 -0
  572. data/resources/mruby/mrbgems/mruby-math/src/math.c +783 -0
  573. data/resources/mruby/mrbgems/mruby-math/test/math.rb +152 -0
  574. data/resources/mruby/mrbgems/mruby-method/README.md +59 -0
  575. data/resources/mruby/mrbgems/mruby-method/mrbgem.rake +7 -0
  576. data/resources/mruby/mrbgems/mruby-method/mrblib/kernel.rb +9 -0
  577. data/resources/mruby/mrbgems/mruby-method/mrblib/method.rb +20 -0
  578. data/resources/mruby/mrbgems/mruby-method/mrblib/unbound_method.rb +9 -0
  579. data/resources/mruby/mrbgems/mruby-method/src/method.c +418 -0
  580. data/resources/mruby/mrbgems/mruby-method/test/method.rb +425 -0
  581. data/resources/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +5 -0
  582. data/resources/mruby/mrbgems/mruby-numeric-ext/mrblib/numeric_ext.rb +25 -0
  583. data/resources/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +102 -0
  584. data/resources/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +28 -0
  585. data/resources/mruby/mrbgems/mruby-object-ext/mrbgem.rake +5 -0
  586. data/resources/mruby/mrbgems/mruby-object-ext/mrblib/object.rb +19 -0
  587. data/resources/mruby/mrbgems/mruby-object-ext/src/object.c +112 -0
  588. data/resources/mruby/mrbgems/mruby-object-ext/test/nil.rb +11 -0
  589. data/resources/mruby/mrbgems/mruby-object-ext/test/object.rb +53 -0
  590. data/resources/mruby/mrbgems/mruby-objectspace/mrbgem.rake +5 -0
  591. data/resources/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +187 -0
  592. data/resources/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +60 -0
  593. data/resources/mruby/mrbgems/mruby-pack/README.md +70 -0
  594. data/resources/mruby/mrbgems/mruby-pack/mrbgem.rake +7 -0
  595. data/resources/mruby/mrbgems/mruby-pack/packtest.rb +157 -0
  596. data/resources/mruby/mrbgems/mruby-pack/run_test.rb +26 -0
  597. data/resources/mruby/mrbgems/mruby-pack/src/pack.c +1281 -0
  598. data/resources/mruby/mrbgems/mruby-pack/test/pack.rb +165 -0
  599. data/resources/mruby/mrbgems/mruby-print/mrbgem.rake +5 -0
  600. data/resources/mruby/mrbgems/mruby-print/mrblib/print.rb +64 -0
  601. data/resources/mruby/mrbgems/mruby-print/src/print.c +64 -0
  602. data/resources/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +5 -0
  603. data/resources/mruby/mrbgems/mruby-proc-ext/mrblib/proc.rb +42 -0
  604. data/resources/mruby/mrbgems/mruby-proc-ext/src/proc.c +173 -0
  605. data/resources/mruby/mrbgems/mruby-proc-ext/test/proc.c +62 -0
  606. data/resources/mruby/mrbgems/mruby-proc-ext/test/proc.rb +96 -0
  607. data/resources/mruby/mrbgems/mruby-random/mrbgem.rake +5 -0
  608. data/resources/mruby/mrbgems/mruby-random/src/mt19937ar.c +224 -0
  609. data/resources/mruby/mrbgems/mruby-random/src/mt19937ar.h +80 -0
  610. data/resources/mruby/mrbgems/mruby-random/src/random.c +349 -0
  611. data/resources/mruby/mrbgems/mruby-random/src/random.h +12 -0
  612. data/resources/mruby/mrbgems/mruby-random/test/random.rb +88 -0
  613. data/resources/mruby/mrbgems/mruby-range-ext/mrbgem.rake +5 -0
  614. data/resources/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +31 -0
  615. data/resources/mruby/mrbgems/mruby-range-ext/src/range.c +176 -0
  616. data/resources/mruby/mrbgems/mruby-range-ext/test/range.rb +32 -0
  617. data/resources/mruby/mrbgems/mruby-socket/README.md +55 -0
  618. data/resources/mruby/mrbgems/mruby-socket/mrbgem.rake +17 -0
  619. data/resources/mruby/mrbgems/mruby-socket/mrblib/socket.rb +621 -0
  620. data/resources/mruby/mrbgems/mruby-socket/run_test.rb +28 -0
  621. data/resources/mruby/mrbgems/mruby-socket/src/const.cstub +453 -0
  622. data/resources/mruby/mrbgems/mruby-socket/src/const.def +163 -0
  623. data/resources/mruby/mrbgems/mruby-socket/src/gen.rb +17 -0
  624. data/resources/mruby/mrbgems/mruby-socket/src/socket.c +928 -0
  625. data/resources/mruby/mrbgems/mruby-socket/test/addrinfo.rb +91 -0
  626. data/resources/mruby/mrbgems/mruby-socket/test/basicsocket.rb +17 -0
  627. data/resources/mruby/mrbgems/mruby-socket/test/ipsocket.rb +44 -0
  628. data/resources/mruby/mrbgems/mruby-socket/test/socket.rb +38 -0
  629. data/resources/mruby/mrbgems/mruby-socket/test/sockettest.c +46 -0
  630. data/resources/mruby/mrbgems/mruby-socket/test/tcpsocket.rb +4 -0
  631. data/resources/mruby/mrbgems/mruby-socket/test/udpsocket.rb +16 -0
  632. data/resources/mruby/mrbgems/mruby-socket/test/unix.rb +130 -0
  633. data/resources/mruby/mrbgems/mruby-sprintf/mrbgem.rake +5 -0
  634. data/resources/mruby/mrbgems/mruby-sprintf/mrblib/string.rb +9 -0
  635. data/resources/mruby/mrbgems/mruby-sprintf/src/kernel.c +30 -0
  636. data/resources/mruby/mrbgems/mruby-sprintf/src/sprintf.c +1126 -0
  637. data/resources/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +110 -0
  638. data/resources/mruby/mrbgems/mruby-string-ext/mrbgem.rake +6 -0
  639. data/resources/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +368 -0
  640. data/resources/mruby/mrbgems/mruby-string-ext/src/string.c +804 -0
  641. data/resources/mruby/mrbgems/mruby-string-ext/test/string.rb +682 -0
  642. data/resources/mruby/mrbgems/mruby-struct/mrbgem.rake +5 -0
  643. data/resources/mruby/mrbgems/mruby-struct/mrblib/struct.rb +103 -0
  644. data/resources/mruby/mrbgems/mruby-struct/src/struct.c +726 -0
  645. data/resources/mruby/mrbgems/mruby-struct/test/struct.rb +205 -0
  646. data/resources/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +5 -0
  647. data/resources/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +78 -0
  648. data/resources/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +64 -0
  649. data/resources/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +48 -0
  650. data/resources/mruby/mrbgems/mruby-test/README.md +7 -0
  651. data/resources/mruby/mrbgems/mruby-test/driver.c +175 -0
  652. data/resources/mruby/mrbgems/mruby-test/init_mrbtest.c +38 -0
  653. data/resources/mruby/mrbgems/mruby-test/mrbgem.rake +191 -0
  654. data/resources/mruby/mrbgems/mruby-time/mrbgem.rake +5 -0
  655. data/resources/mruby/mrbgems/mruby-time/mrblib/time.rb +9 -0
  656. data/resources/mruby/mrbgems/mruby-time/src/time.c +869 -0
  657. data/resources/mruby/mrbgems/mruby-time/test/time.rb +228 -0
  658. data/resources/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +5 -0
  659. data/resources/mruby/mrbgems/mruby-toplevel-ext/mrblib/toplevel.rb +11 -0
  660. data/resources/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +24 -0
  661. data/resources/mruby/mrblib/00class.rb +29 -0
  662. data/resources/mruby/mrblib/10error.rb +59 -0
  663. data/resources/mruby/mrblib/array.rb +243 -0
  664. data/resources/mruby/mrblib/compar.rb +84 -0
  665. data/resources/mruby/mrblib/enum.rb +348 -0
  666. data/resources/mruby/mrblib/float.rb +9 -0
  667. data/resources/mruby/mrblib/hash.rb +358 -0
  668. data/resources/mruby/mrblib/init_mrblib.c +11 -0
  669. data/resources/mruby/mrblib/kernel.rb +50 -0
  670. data/resources/mruby/mrblib/mrblib.rake +21 -0
  671. data/resources/mruby/mrblib/numeric.rb +163 -0
  672. data/resources/mruby/mrblib/range.rb +67 -0
  673. data/resources/mruby/mrblib/string.rb +275 -0
  674. data/resources/mruby/mruby-source.gemspec +18 -0
  675. data/resources/mruby/src/array.c +1251 -0
  676. data/resources/mruby/src/backtrace.c +285 -0
  677. data/resources/mruby/src/class.c +2546 -0
  678. data/resources/mruby/src/codedump.c +477 -0
  679. data/resources/mruby/src/compar.c +13 -0
  680. data/resources/mruby/src/crc.c +39 -0
  681. data/resources/mruby/src/debug.c +217 -0
  682. data/resources/mruby/src/dump.c +1106 -0
  683. data/resources/mruby/src/enum.c +14 -0
  684. data/resources/mruby/src/error.c +513 -0
  685. data/resources/mruby/src/error.h +3 -0
  686. data/resources/mruby/src/etc.c +246 -0
  687. data/resources/mruby/src/fmt_fp.c +374 -0
  688. data/resources/mruby/src/gc.c +1835 -0
  689. data/resources/mruby/src/hash.c +916 -0
  690. data/resources/mruby/src/init.c +51 -0
  691. data/resources/mruby/src/kernel.c +1264 -0
  692. data/resources/mruby/src/load.c +706 -0
  693. data/resources/mruby/src/mruby_core.rake +20 -0
  694. data/resources/mruby/src/numeric.c +1574 -0
  695. data/resources/mruby/src/object.c +618 -0
  696. data/resources/mruby/src/opcode.h +2 -0
  697. data/resources/mruby/src/pool.c +209 -0
  698. data/resources/mruby/src/print.c +47 -0
  699. data/resources/mruby/src/proc.c +313 -0
  700. data/resources/mruby/src/range.c +446 -0
  701. data/resources/mruby/src/state.c +307 -0
  702. data/resources/mruby/src/string.c +3025 -0
  703. data/resources/mruby/src/symbol.c +494 -0
  704. data/resources/mruby/src/value_array.h +27 -0
  705. data/resources/mruby/src/variable.c +982 -0
  706. data/resources/mruby/src/version.c +17 -0
  707. data/resources/mruby/src/vm.c +3020 -0
  708. data/resources/mruby/tasks/benchmark.rake +91 -0
  709. data/resources/mruby/tasks/gitlab.rake +118 -0
  710. data/resources/mruby/tasks/libmruby.rake +24 -0
  711. data/resources/mruby/tasks/mrbgems.rake +98 -0
  712. data/resources/mruby/tasks/toolchains/android.rake +321 -0
  713. data/resources/mruby/tasks/toolchains/clang.rake +9 -0
  714. data/resources/mruby/tasks/toolchains/gcc.rake +66 -0
  715. data/resources/mruby/tasks/toolchains/openwrt.rake +38 -0
  716. data/resources/mruby/tasks/toolchains/visualcpp.rake +68 -0
  717. data/resources/mruby/test/assert.rb +249 -0
  718. data/resources/mruby/test/bintest.rb +33 -0
  719. data/resources/mruby/test/report.rb +4 -0
  720. data/resources/mruby/test/t/argumenterror.rb +16 -0
  721. data/resources/mruby/test/t/array.rb +394 -0
  722. data/resources/mruby/test/t/basicobject.rb +11 -0
  723. data/resources/mruby/test/t/bs_block.rb +521 -0
  724. data/resources/mruby/test/t/bs_literal.rb +38 -0
  725. data/resources/mruby/test/t/class.rb +451 -0
  726. data/resources/mruby/test/t/codegen.rb +197 -0
  727. data/resources/mruby/test/t/comparable.rb +80 -0
  728. data/resources/mruby/test/t/ensure.rb +54 -0
  729. data/resources/mruby/test/t/enumerable.rb +134 -0
  730. data/resources/mruby/test/t/exception.rb +422 -0
  731. data/resources/mruby/test/t/false.rb +31 -0
  732. data/resources/mruby/test/t/float.rb +209 -0
  733. data/resources/mruby/test/t/gc.rb +45 -0
  734. data/resources/mruby/test/t/hash.rb +375 -0
  735. data/resources/mruby/test/t/indexerror.rb +6 -0
  736. data/resources/mruby/test/t/integer.rb +277 -0
  737. data/resources/mruby/test/t/iterations.rb +61 -0
  738. data/resources/mruby/test/t/kernel.rb +600 -0
  739. data/resources/mruby/test/t/lang.rb +74 -0
  740. data/resources/mruby/test/t/literals.rb +337 -0
  741. data/resources/mruby/test/t/localjumperror.rb +13 -0
  742. data/resources/mruby/test/t/methods.rb +109 -0
  743. data/resources/mruby/test/t/module.rb +914 -0
  744. data/resources/mruby/test/t/nameerror.rb +28 -0
  745. data/resources/mruby/test/t/nil.rb +39 -0
  746. data/resources/mruby/test/t/nomethoderror.rb +22 -0
  747. data/resources/mruby/test/t/numeric.rb +43 -0
  748. data/resources/mruby/test/t/object.rb +11 -0
  749. data/resources/mruby/test/t/proc.rb +180 -0
  750. data/resources/mruby/test/t/range.rb +95 -0
  751. data/resources/mruby/test/t/rangeerror.rb +6 -0
  752. data/resources/mruby/test/t/regexperror.rb +4 -0
  753. data/resources/mruby/test/t/runtimeerror.rb +6 -0
  754. data/resources/mruby/test/t/standarderror.rb +6 -0
  755. data/resources/mruby/test/t/string.rb +728 -0
  756. data/resources/mruby/test/t/superclass.rb +47 -0
  757. data/resources/mruby/test/t/symbol.rb +30 -0
  758. data/resources/mruby/test/t/syntax.rb +468 -0
  759. data/resources/mruby/test/t/true.rb +31 -0
  760. data/resources/mruby/test/t/typeerror.rb +6 -0
  761. data/resources/mruby/test/t/unicode.rb +39 -0
  762. data/resources/mruby/travis_config.rb +53 -0
  763. metadata +806 -0
@@ -0,0 +1,18 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mruby/source'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "mruby-source"
8
+ spec.version = MRuby::Source::MRUBY_VERSION
9
+ spec.authors = [ MRuby::Source::MRUBY_AUTHOR ]
10
+
11
+ spec.summary = %q{MRuby source code wrapper.}
12
+ spec.description = %q{MRuby source code wrapper for use with Ruby libs.}
13
+ spec.homepage = "http://www.mruby.org/"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.require_paths = ["lib"]
18
+ end
@@ -0,0 +1,1251 @@
1
+ /*
2
+ ** array.c - Array class
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #include <mruby.h>
8
+ #include <mruby/array.h>
9
+ #include <mruby/class.h>
10
+ #include <mruby/string.h>
11
+ #include <mruby/range.h>
12
+ #include "value_array.h"
13
+
14
+ #define ARY_DEFAULT_LEN 4
15
+ #define ARY_SHRINK_RATIO 5 /* must be larger than 2 */
16
+ #define ARY_C_MAX_SIZE (SIZE_MAX / sizeof(mrb_value))
17
+ #define ARY_MAX_SIZE ((mrb_int)((ARY_C_MAX_SIZE < (size_t)MRB_INT_MAX) ? ARY_C_MAX_SIZE : MRB_INT_MAX-1))
18
+
19
+ static struct RArray*
20
+ ary_new_capa(mrb_state *mrb, mrb_int capa)
21
+ {
22
+ struct RArray *a;
23
+ size_t blen;
24
+
25
+ if (capa > ARY_MAX_SIZE) {
26
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
27
+ }
28
+ blen = capa * sizeof(mrb_value);
29
+
30
+ a = (struct RArray*)mrb_obj_alloc(mrb, MRB_TT_ARRAY, mrb->array_class);
31
+ if (capa <= MRB_ARY_EMBED_LEN_MAX) {
32
+ ARY_SET_EMBED_LEN(a, 0);
33
+ }
34
+ else {
35
+ a->as.heap.ptr = (mrb_value *)mrb_malloc(mrb, blen);
36
+ a->as.heap.aux.capa = capa;
37
+ a->as.heap.len = 0;
38
+ }
39
+
40
+ return a;
41
+ }
42
+
43
+ MRB_API mrb_value
44
+ mrb_ary_new_capa(mrb_state *mrb, mrb_int capa)
45
+ {
46
+ struct RArray *a = ary_new_capa(mrb, capa);
47
+ return mrb_obj_value(a);
48
+ }
49
+
50
+ MRB_API mrb_value
51
+ mrb_ary_new(mrb_state *mrb)
52
+ {
53
+ return mrb_ary_new_capa(mrb, 0);
54
+ }
55
+
56
+ /*
57
+ * to copy array, use this instead of memcpy because of portability
58
+ * * gcc on ARM may fail optimization of memcpy
59
+ * http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3934.html
60
+ * * gcc on MIPS also fail
61
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39755
62
+ * * memcpy doesn't exist on freestanding environment
63
+ *
64
+ * If you optimize for binary size, use memcpy instead of this at your own risk
65
+ * of above portability issue.
66
+ *
67
+ * see also http://togetter.com/li/462898
68
+ *
69
+ */
70
+ static inline void
71
+ array_copy(mrb_value *dst, const mrb_value *src, mrb_int size)
72
+ {
73
+ mrb_int i;
74
+
75
+ for (i = 0; i < size; i++) {
76
+ dst[i] = src[i];
77
+ }
78
+ }
79
+
80
+ MRB_API mrb_value
81
+ mrb_ary_new_from_values(mrb_state *mrb, mrb_int size, const mrb_value *vals)
82
+ {
83
+ struct RArray *a = ary_new_capa(mrb, size);
84
+
85
+ array_copy(ARY_PTR(a), vals, size);
86
+ ARY_SET_LEN(a, size);
87
+
88
+ return mrb_obj_value(a);
89
+ }
90
+
91
+ MRB_API mrb_value
92
+ mrb_assoc_new(mrb_state *mrb, mrb_value car, mrb_value cdr)
93
+ {
94
+ struct RArray *a;
95
+
96
+ a = ary_new_capa(mrb, 2);
97
+ ARY_PTR(a)[0] = car;
98
+ ARY_PTR(a)[1] = cdr;
99
+ ARY_SET_LEN(a, 2);
100
+ return mrb_obj_value(a);
101
+ }
102
+
103
+ static void
104
+ ary_fill_with_nil(mrb_value *ptr, mrb_int size)
105
+ {
106
+ mrb_value nil = mrb_nil_value();
107
+
108
+ while (size--) {
109
+ *ptr++ = nil;
110
+ }
111
+ }
112
+
113
+ static void
114
+ ary_modify_check(mrb_state *mrb, struct RArray *a)
115
+ {
116
+ if (MRB_FROZEN_P(a)) {
117
+ mrb_raise(mrb, E_FROZEN_ERROR, "can't modify frozen array");
118
+ }
119
+ }
120
+
121
+ static void
122
+ ary_modify(mrb_state *mrb, struct RArray *a)
123
+ {
124
+ ary_modify_check(mrb, a);
125
+
126
+ if (ARY_SHARED_P(a)) {
127
+ mrb_shared_array *shared = a->as.heap.aux.shared;
128
+
129
+ if (shared->refcnt == 1 && a->as.heap.ptr == shared->ptr) {
130
+ a->as.heap.ptr = shared->ptr;
131
+ a->as.heap.aux.capa = a->as.heap.len;
132
+ mrb_free(mrb, shared);
133
+ }
134
+ else {
135
+ mrb_value *ptr, *p;
136
+ mrb_int len;
137
+
138
+ p = a->as.heap.ptr;
139
+ len = a->as.heap.len * sizeof(mrb_value);
140
+ ptr = (mrb_value *)mrb_malloc(mrb, len);
141
+ if (p) {
142
+ array_copy(ptr, p, a->as.heap.len);
143
+ }
144
+ a->as.heap.ptr = ptr;
145
+ a->as.heap.aux.capa = a->as.heap.len;
146
+ mrb_ary_decref(mrb, shared);
147
+ }
148
+ ARY_UNSET_SHARED_FLAG(a);
149
+ }
150
+ }
151
+
152
+ MRB_API void
153
+ mrb_ary_modify(mrb_state *mrb, struct RArray* a)
154
+ {
155
+ mrb_write_barrier(mrb, (struct RBasic*)a);
156
+ ary_modify(mrb, a);
157
+ }
158
+
159
+ static void
160
+ ary_make_shared(mrb_state *mrb, struct RArray *a)
161
+ {
162
+ if (!ARY_SHARED_P(a) && !ARY_EMBED_P(a)) {
163
+ mrb_shared_array *shared = (mrb_shared_array *)mrb_malloc(mrb, sizeof(mrb_shared_array));
164
+ mrb_value *ptr = a->as.heap.ptr;
165
+ mrb_int len = a->as.heap.len;
166
+
167
+ shared->refcnt = 1;
168
+ if (a->as.heap.aux.capa > len) {
169
+ a->as.heap.ptr = shared->ptr = (mrb_value *)mrb_realloc(mrb, ptr, sizeof(mrb_value)*len+1);
170
+ }
171
+ else {
172
+ shared->ptr = ptr;
173
+ }
174
+ shared->len = len;
175
+ a->as.heap.aux.shared = shared;
176
+ ARY_SET_SHARED_FLAG(a);
177
+ }
178
+ }
179
+
180
+ static void
181
+ ary_expand_capa(mrb_state *mrb, struct RArray *a, mrb_int len)
182
+ {
183
+ mrb_int capa = ARY_CAPA(a);
184
+
185
+ if (len > ARY_MAX_SIZE || len < 0) {
186
+ size_error:
187
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
188
+ }
189
+
190
+ if (capa < ARY_DEFAULT_LEN) {
191
+ capa = ARY_DEFAULT_LEN;
192
+ }
193
+ while (capa < len) {
194
+ if (capa <= ARY_MAX_SIZE / 2) {
195
+ capa *= 2;
196
+ }
197
+ else {
198
+ capa = len;
199
+ }
200
+ }
201
+ if (capa < len || capa > ARY_MAX_SIZE) {
202
+ goto size_error;
203
+ }
204
+
205
+ if (ARY_EMBED_P(a)) {
206
+ mrb_value *ptr = ARY_EMBED_PTR(a);
207
+ mrb_int len = ARY_EMBED_LEN(a);
208
+ mrb_value *expanded_ptr = (mrb_value *)mrb_malloc(mrb, sizeof(mrb_value)*capa);
209
+
210
+ ARY_UNSET_EMBED_FLAG(a);
211
+ array_copy(expanded_ptr, ptr, len);
212
+ a->as.heap.len = len;
213
+ a->as.heap.aux.capa = capa;
214
+ a->as.heap.ptr = expanded_ptr;
215
+ }
216
+ else if (capa > a->as.heap.aux.capa) {
217
+ mrb_value *expanded_ptr = (mrb_value *)mrb_realloc(mrb, a->as.heap.ptr, sizeof(mrb_value)*capa);
218
+
219
+ a->as.heap.aux.capa = capa;
220
+ a->as.heap.ptr = expanded_ptr;
221
+ }
222
+ }
223
+
224
+ static void
225
+ ary_shrink_capa(mrb_state *mrb, struct RArray *a)
226
+ {
227
+
228
+ mrb_int capa;
229
+
230
+ if (ARY_EMBED_P(a)) return;
231
+
232
+ capa = a->as.heap.aux.capa;
233
+ if (capa < ARY_DEFAULT_LEN * 2) return;
234
+ if (capa <= a->as.heap.len * ARY_SHRINK_RATIO) return;
235
+
236
+ do {
237
+ capa /= 2;
238
+ if (capa < ARY_DEFAULT_LEN) {
239
+ capa = ARY_DEFAULT_LEN;
240
+ break;
241
+ }
242
+ } while (capa > a->as.heap.len * ARY_SHRINK_RATIO);
243
+
244
+ if (capa > a->as.heap.len && capa < a->as.heap.aux.capa) {
245
+ a->as.heap.aux.capa = capa;
246
+ a->as.heap.ptr = (mrb_value *)mrb_realloc(mrb, a->as.heap.ptr, sizeof(mrb_value)*capa);
247
+ }
248
+ }
249
+
250
+ MRB_API mrb_value
251
+ mrb_ary_resize(mrb_state *mrb, mrb_value ary, mrb_int new_len)
252
+ {
253
+ mrb_int old_len;
254
+ struct RArray *a = mrb_ary_ptr(ary);
255
+
256
+ ary_modify(mrb, a);
257
+ old_len = RARRAY_LEN(ary);
258
+ if (old_len != new_len) {
259
+ ARY_SET_LEN(a, new_len);
260
+ if (new_len < old_len) {
261
+ ary_shrink_capa(mrb, a);
262
+ }
263
+ else {
264
+ ary_expand_capa(mrb, a, new_len);
265
+ ary_fill_with_nil(ARY_PTR(a) + old_len, new_len - old_len);
266
+ }
267
+ }
268
+
269
+ return ary;
270
+ }
271
+
272
+ static mrb_value
273
+ mrb_ary_s_create(mrb_state *mrb, mrb_value klass)
274
+ {
275
+ mrb_value ary;
276
+ mrb_value *vals;
277
+ mrb_int len;
278
+ struct RArray *a;
279
+
280
+ mrb_get_args(mrb, "*!", &vals, &len);
281
+ ary = mrb_ary_new_from_values(mrb, len, vals);
282
+ a = mrb_ary_ptr(ary);
283
+ a->c = mrb_class_ptr(klass);
284
+
285
+ return ary;
286
+ }
287
+
288
+ static void
289
+ ary_concat(mrb_state *mrb, struct RArray *a, struct RArray *a2)
290
+ {
291
+ mrb_int len;
292
+
293
+ if (ARY_LEN(a2) > ARY_MAX_SIZE - ARY_LEN(a)) {
294
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
295
+ }
296
+ len = ARY_LEN(a) + ARY_LEN(a2);
297
+
298
+ ary_modify(mrb, a);
299
+ if (ARY_CAPA(a) < len) {
300
+ ary_expand_capa(mrb, a, len);
301
+ }
302
+ array_copy(ARY_PTR(a)+ARY_LEN(a), ARY_PTR(a2), ARY_LEN(a2));
303
+ mrb_write_barrier(mrb, (struct RBasic*)a);
304
+ ARY_SET_LEN(a, len);
305
+ }
306
+
307
+ MRB_API void
308
+ mrb_ary_concat(mrb_state *mrb, mrb_value self, mrb_value other)
309
+ {
310
+ struct RArray *a2 = mrb_ary_ptr(other);
311
+
312
+ ary_concat(mrb, mrb_ary_ptr(self), a2);
313
+ }
314
+
315
+ static mrb_value
316
+ mrb_ary_concat_m(mrb_state *mrb, mrb_value self)
317
+ {
318
+ mrb_value ary;
319
+
320
+ mrb_get_args(mrb, "A", &ary);
321
+ mrb_ary_concat(mrb, self, ary);
322
+ return self;
323
+ }
324
+
325
+ static mrb_value
326
+ mrb_ary_plus(mrb_state *mrb, mrb_value self)
327
+ {
328
+ struct RArray *a1 = mrb_ary_ptr(self);
329
+ struct RArray *a2;
330
+ mrb_value *ptr;
331
+ mrb_int blen, len1;
332
+
333
+ mrb_get_args(mrb, "a", &ptr, &blen);
334
+ if (ARY_MAX_SIZE - blen < ARY_LEN(a1)) {
335
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
336
+ }
337
+ len1 = ARY_LEN(a1);
338
+ a2 = ary_new_capa(mrb, len1 + blen);
339
+ array_copy(ARY_PTR(a2), ARY_PTR(a1), len1);
340
+ array_copy(ARY_PTR(a2) + len1, ptr, blen);
341
+ ARY_SET_LEN(a2, len1+blen);
342
+
343
+ return mrb_obj_value(a2);
344
+ }
345
+
346
+ static void
347
+ ary_replace(mrb_state *mrb, struct RArray *a, mrb_value *argv, mrb_int len)
348
+ {
349
+ ary_modify(mrb, a);
350
+ if (ARY_CAPA(a) < len)
351
+ ary_expand_capa(mrb, a, len);
352
+ array_copy(ARY_PTR(a), argv, len);
353
+ mrb_write_barrier(mrb, (struct RBasic*)a);
354
+ ARY_SET_LEN(a, len);
355
+ }
356
+
357
+ MRB_API void
358
+ mrb_ary_replace(mrb_state *mrb, mrb_value self, mrb_value other)
359
+ {
360
+ struct RArray *a1 = mrb_ary_ptr(self);
361
+ struct RArray *a2 = mrb_ary_ptr(other);
362
+
363
+ if (a1 != a2) {
364
+ ary_replace(mrb, a1, ARY_PTR(a2), ARY_LEN(a2));
365
+ }
366
+ }
367
+
368
+ static mrb_value
369
+ mrb_ary_replace_m(mrb_state *mrb, mrb_value self)
370
+ {
371
+ mrb_value other;
372
+
373
+ mrb_get_args(mrb, "A", &other);
374
+ mrb_ary_replace(mrb, self, other);
375
+
376
+ return self;
377
+ }
378
+
379
+ static mrb_value
380
+ mrb_ary_times(mrb_state *mrb, mrb_value self)
381
+ {
382
+ struct RArray *a1 = mrb_ary_ptr(self);
383
+ struct RArray *a2;
384
+ mrb_value *ptr;
385
+ mrb_int times, len1;
386
+
387
+ mrb_get_args(mrb, "i", &times);
388
+ if (times < 0) {
389
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "negative argument");
390
+ }
391
+ if (times == 0) return mrb_ary_new(mrb);
392
+ if (ARY_MAX_SIZE / times < ARY_LEN(a1)) {
393
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
394
+ }
395
+ len1 = ARY_LEN(a1);
396
+ a2 = ary_new_capa(mrb, len1 * times);
397
+ ARY_SET_LEN(a2, len1 * times);
398
+ ptr = ARY_PTR(a2);
399
+ while (times--) {
400
+ array_copy(ptr, ARY_PTR(a1), len1);
401
+ ptr += len1;
402
+ }
403
+
404
+ return mrb_obj_value(a2);
405
+ }
406
+
407
+ static mrb_value
408
+ mrb_ary_reverse_bang(mrb_state *mrb, mrb_value self)
409
+ {
410
+ struct RArray *a = mrb_ary_ptr(self);
411
+ mrb_int len = ARY_LEN(a);
412
+
413
+ if (len > 1) {
414
+ mrb_value *p1, *p2;
415
+
416
+ ary_modify(mrb, a);
417
+ p1 = ARY_PTR(a);
418
+ p2 = p1 + len - 1;
419
+
420
+ while (p1 < p2) {
421
+ mrb_value tmp = *p1;
422
+ *p1++ = *p2;
423
+ *p2-- = tmp;
424
+ }
425
+ }
426
+ return self;
427
+ }
428
+
429
+ static mrb_value
430
+ mrb_ary_reverse(mrb_state *mrb, mrb_value self)
431
+ {
432
+ struct RArray *a = mrb_ary_ptr(self), *b = ary_new_capa(mrb, ARY_LEN(a));
433
+ mrb_int len = ARY_LEN(a);
434
+
435
+ if (len > 0) {
436
+ mrb_value *p1, *p2, *e;
437
+
438
+ p1 = ARY_PTR(a);
439
+ e = p1 + len;
440
+ p2 = ARY_PTR(b) + len - 1;
441
+ while (p1 < e) {
442
+ *p2-- = *p1++;
443
+ }
444
+ ARY_SET_LEN(b, len);
445
+ }
446
+ return mrb_obj_value(b);
447
+ }
448
+
449
+ MRB_API void
450
+ mrb_ary_push(mrb_state *mrb, mrb_value ary, mrb_value elem)
451
+ {
452
+ struct RArray *a = mrb_ary_ptr(ary);
453
+ mrb_int len = ARY_LEN(a);
454
+
455
+ ary_modify(mrb, a);
456
+ if (len == ARY_CAPA(a))
457
+ ary_expand_capa(mrb, a, len + 1);
458
+ ARY_PTR(a)[len] = elem;
459
+ ARY_SET_LEN(a, len+1);
460
+ mrb_field_write_barrier_value(mrb, (struct RBasic*)a, elem);
461
+ }
462
+
463
+ static mrb_value
464
+ mrb_ary_push_m(mrb_state *mrb, mrb_value self)
465
+ {
466
+ mrb_value *argv;
467
+ mrb_int len, len2, alen;
468
+ struct RArray *a;
469
+
470
+ mrb_get_args(mrb, "*!", &argv, &alen);
471
+ a = mrb_ary_ptr(self);
472
+ ary_modify(mrb, a);
473
+ len = ARY_LEN(a);
474
+ len2 = len + alen;
475
+ if (ARY_CAPA(a) < len2) {
476
+ ary_expand_capa(mrb, a, len2);
477
+ }
478
+ array_copy(ARY_PTR(a)+len, argv, alen);
479
+ ARY_SET_LEN(a, len2);
480
+ mrb_write_barrier(mrb, (struct RBasic*)a);
481
+
482
+ return self;
483
+ }
484
+
485
+ MRB_API mrb_value
486
+ mrb_ary_pop(mrb_state *mrb, mrb_value ary)
487
+ {
488
+ struct RArray *a = mrb_ary_ptr(ary);
489
+ mrb_int len = ARY_LEN(a);
490
+
491
+ ary_modify_check(mrb, a);
492
+ if (len == 0) return mrb_nil_value();
493
+ ARY_SET_LEN(a, len-1);
494
+ return ARY_PTR(a)[len-1];
495
+ }
496
+
497
+ #define ARY_SHIFT_SHARED_MIN 10
498
+
499
+ MRB_API mrb_value
500
+ mrb_ary_shift(mrb_state *mrb, mrb_value self)
501
+ {
502
+ struct RArray *a = mrb_ary_ptr(self);
503
+ mrb_int len = ARY_LEN(a);
504
+ mrb_value val;
505
+
506
+ ary_modify_check(mrb, a);
507
+ if (len == 0) return mrb_nil_value();
508
+ if (ARY_SHARED_P(a)) {
509
+ L_SHIFT:
510
+ val = a->as.heap.ptr[0];
511
+ a->as.heap.ptr++;
512
+ a->as.heap.len--;
513
+ return val;
514
+ }
515
+ if (len > ARY_SHIFT_SHARED_MIN) {
516
+ ary_make_shared(mrb, a);
517
+ goto L_SHIFT;
518
+ }
519
+ else {
520
+ mrb_value *ptr = ARY_PTR(a);
521
+ mrb_int size = len;
522
+
523
+ val = *ptr;
524
+ while (--size) {
525
+ *ptr = *(ptr+1);
526
+ ++ptr;
527
+ }
528
+ ARY_SET_LEN(a, len-1);
529
+ }
530
+ return val;
531
+ }
532
+
533
+ /* self = [1,2,3]
534
+ item = 0
535
+ self.unshift item
536
+ p self #=> [0, 1, 2, 3] */
537
+ MRB_API mrb_value
538
+ mrb_ary_unshift(mrb_state *mrb, mrb_value self, mrb_value item)
539
+ {
540
+ struct RArray *a = mrb_ary_ptr(self);
541
+ mrb_int len = ARY_LEN(a);
542
+
543
+ if (ARY_SHARED_P(a)
544
+ && a->as.heap.aux.shared->refcnt == 1 /* shared only referenced from this array */
545
+ && a->as.heap.ptr - a->as.heap.aux.shared->ptr >= 1) /* there's room for unshifted item */ {
546
+ a->as.heap.ptr--;
547
+ a->as.heap.ptr[0] = item;
548
+ }
549
+ else {
550
+ mrb_value *ptr;
551
+
552
+ ary_modify(mrb, a);
553
+ if (ARY_CAPA(a) < len + 1)
554
+ ary_expand_capa(mrb, a, len + 1);
555
+ ptr = ARY_PTR(a);
556
+ value_move(ptr + 1, ptr, len);
557
+ ptr[0] = item;
558
+ }
559
+ ARY_SET_LEN(a, len+1);
560
+ mrb_field_write_barrier_value(mrb, (struct RBasic*)a, item);
561
+
562
+ return self;
563
+ }
564
+
565
+ static mrb_value
566
+ mrb_ary_unshift_m(mrb_state *mrb, mrb_value self)
567
+ {
568
+ struct RArray *a = mrb_ary_ptr(self);
569
+ mrb_value *vals, *ptr;
570
+ mrb_int alen, len;
571
+
572
+ mrb_get_args(mrb, "*!", &vals, &alen);
573
+ if (alen == 0) {
574
+ ary_modify_check(mrb, a);
575
+ return self;
576
+ }
577
+ len = ARY_LEN(a);
578
+ if (alen > ARY_MAX_SIZE - len) {
579
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "array size too big");
580
+ }
581
+ if (ARY_SHARED_P(a)
582
+ && a->as.heap.aux.shared->refcnt == 1 /* shared only referenced from this array */
583
+ && a->as.heap.ptr - a->as.heap.aux.shared->ptr >= alen) /* there's room for unshifted item */ {
584
+ ary_modify_check(mrb, a);
585
+ a->as.heap.ptr -= alen;
586
+ ptr = a->as.heap.ptr;
587
+ }
588
+ else {
589
+ ary_modify(mrb, a);
590
+ if (ARY_CAPA(a) < len + alen)
591
+ ary_expand_capa(mrb, a, len + alen);
592
+ ptr = ARY_PTR(a);
593
+ value_move(ptr + alen, ptr, len);
594
+ }
595
+ array_copy(ptr, vals, alen);
596
+ ARY_SET_LEN(a, len+alen);
597
+ while (alen--) {
598
+ mrb_field_write_barrier_value(mrb, (struct RBasic*)a, vals[alen]);
599
+ }
600
+
601
+ return self;
602
+ }
603
+
604
+ MRB_API mrb_value
605
+ mrb_ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n)
606
+ {
607
+ struct RArray *a = mrb_ary_ptr(ary);
608
+ mrb_int len = ARY_LEN(a);
609
+
610
+ /* range check */
611
+ if (n < 0) n += len;
612
+ if (n < 0 || len <= n) return mrb_nil_value();
613
+
614
+ return ARY_PTR(a)[n];
615
+ }
616
+
617
+ MRB_API void
618
+ mrb_ary_set(mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val)
619
+ {
620
+ struct RArray *a = mrb_ary_ptr(ary);
621
+ mrb_int len = ARY_LEN(a);
622
+
623
+ ary_modify(mrb, a);
624
+ /* range check */
625
+ if (n < 0) {
626
+ n += len;
627
+ if (n < 0) {
628
+ mrb_raisef(mrb, E_INDEX_ERROR, "index %S out of array", mrb_fixnum_value(n - len));
629
+ }
630
+ }
631
+ if (len <= n) {
632
+ if (ARY_CAPA(a) <= n)
633
+ ary_expand_capa(mrb, a, n + 1);
634
+ ary_fill_with_nil(ARY_PTR(a) + len, n + 1 - len);
635
+ ARY_SET_LEN(a, n+1);
636
+ }
637
+
638
+ ARY_PTR(a)[n] = val;
639
+ mrb_field_write_barrier_value(mrb, (struct RBasic*)a, val);
640
+ }
641
+
642
+ static struct RArray*
643
+ ary_dup(mrb_state *mrb, struct RArray *a)
644
+ {
645
+ mrb_int len = ARY_LEN(a);
646
+ struct RArray *d = ary_new_capa(mrb, len);
647
+
648
+ ary_replace(mrb, d, ARY_PTR(a), len);
649
+ return d;
650
+ }
651
+
652
+ MRB_API mrb_value
653
+ mrb_ary_splice(mrb_state *mrb, mrb_value ary, mrb_int head, mrb_int len, mrb_value rpl)
654
+ {
655
+ struct RArray *a = mrb_ary_ptr(ary);
656
+ mrb_int alen = ARY_LEN(a);
657
+ const mrb_value *argv;
658
+ mrb_int argc;
659
+ mrb_int tail;
660
+
661
+ ary_modify(mrb, a);
662
+
663
+ /* len check */
664
+ if (len < 0) mrb_raisef(mrb, E_INDEX_ERROR, "negative length (%S)", mrb_fixnum_value(len));
665
+
666
+ /* range check */
667
+ if (head < 0) {
668
+ head += alen;
669
+ if (head < 0) {
670
+ mrb_raise(mrb, E_INDEX_ERROR, "index is out of array");
671
+ }
672
+ }
673
+ tail = head + len;
674
+ if (alen < len || alen < tail) {
675
+ len = alen - head;
676
+ }
677
+
678
+ /* size check */
679
+ if (mrb_array_p(rpl)) {
680
+ argc = RARRAY_LEN(rpl);
681
+ argv = RARRAY_PTR(rpl);
682
+ if (argv == ARY_PTR(a)) {
683
+ struct RArray *r;
684
+
685
+ if (argc > 32767) {
686
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "too big recursive splice");
687
+ }
688
+ r = ary_dup(mrb, a);
689
+ argv = ARY_PTR(r);
690
+ }
691
+ }
692
+ else {
693
+ argc = 1;
694
+ argv = &rpl;
695
+ }
696
+ if (head >= alen) {
697
+ if (head > ARY_MAX_SIZE - argc) {
698
+ mrb_raisef(mrb, E_INDEX_ERROR, "index %S too big", mrb_fixnum_value(head));
699
+ }
700
+ len = head + argc;
701
+ if (len > ARY_CAPA(a)) {
702
+ ary_expand_capa(mrb, a, head + argc);
703
+ }
704
+ ary_fill_with_nil(ARY_PTR(a) + alen, head - alen);
705
+ if (argc > 0) {
706
+ array_copy(ARY_PTR(a) + head, argv, argc);
707
+ }
708
+ ARY_SET_LEN(a, len);
709
+ }
710
+ else {
711
+ mrb_int newlen;
712
+
713
+ if (alen - len > ARY_MAX_SIZE - argc) {
714
+ mrb_raisef(mrb, E_INDEX_ERROR, "index %S too big", mrb_fixnum_value(alen + argc - len));
715
+ }
716
+ newlen = alen + argc - len;
717
+ if (newlen > ARY_CAPA(a)) {
718
+ ary_expand_capa(mrb, a, newlen);
719
+ }
720
+
721
+ if (len != argc) {
722
+ mrb_value *ptr = ARY_PTR(a);
723
+ tail = head + len;
724
+ value_move(ptr + head + argc, ptr + tail, alen - tail);
725
+ ARY_SET_LEN(a, newlen);
726
+ }
727
+ if (argc > 0) {
728
+ value_move(ARY_PTR(a) + head, argv, argc);
729
+ }
730
+ }
731
+ mrb_write_barrier(mrb, (struct RBasic*)a);
732
+ return ary;
733
+ }
734
+
735
+ void
736
+ mrb_ary_decref(mrb_state *mrb, mrb_shared_array *shared)
737
+ {
738
+ shared->refcnt--;
739
+ if (shared->refcnt == 0) {
740
+ mrb_free(mrb, shared->ptr);
741
+ mrb_free(mrb, shared);
742
+ }
743
+ }
744
+
745
+ static mrb_value
746
+ ary_subseq(mrb_state *mrb, struct RArray *a, mrb_int beg, mrb_int len)
747
+ {
748
+ struct RArray *b;
749
+
750
+ if (!ARY_SHARED_P(a) && len <= ARY_SHIFT_SHARED_MIN) {
751
+ return mrb_ary_new_from_values(mrb, len, ARY_PTR(a)+beg);
752
+ }
753
+ ary_make_shared(mrb, a);
754
+ b = (struct RArray*)mrb_obj_alloc(mrb, MRB_TT_ARRAY, mrb->array_class);
755
+ b->as.heap.ptr = a->as.heap.ptr + beg;
756
+ b->as.heap.len = len;
757
+ b->as.heap.aux.shared = a->as.heap.aux.shared;
758
+ b->as.heap.aux.shared->refcnt++;
759
+ ARY_SET_SHARED_FLAG(b);
760
+
761
+ return mrb_obj_value(b);
762
+ }
763
+
764
+ static mrb_int
765
+ aget_index(mrb_state *mrb, mrb_value index)
766
+ {
767
+ if (mrb_fixnum_p(index)) {
768
+ return mrb_fixnum(index);
769
+ }
770
+ #ifndef MRB_WITHOUT_FLOAT
771
+ else if (mrb_float_p(index)) {
772
+ return (mrb_int)mrb_float(index);
773
+ }
774
+ #endif
775
+ else {
776
+ mrb_int i, argc;
777
+ mrb_value *argv;
778
+
779
+ mrb_get_args(mrb, "i*!", &i, &argv, &argc);
780
+ return i;
781
+ }
782
+ }
783
+
784
+ /*
785
+ * call-seq:
786
+ * ary[index] -> obj or nil
787
+ * ary[start, length] -> new_ary or nil
788
+ * ary[range] -> new_ary or nil
789
+ * ary.slice(index) -> obj or nil
790
+ * ary.slice(start, length) -> new_ary or nil
791
+ * ary.slice(range) -> new_ary or nil
792
+ *
793
+ * Element Reference --- Returns the element at +index+, or returns a
794
+ * subarray starting at the +start+ index and continuing for +length+
795
+ * elements, or returns a subarray specified by +range+ of indices.
796
+ *
797
+ * Negative indices count backward from the end of the array (-1 is the last
798
+ * element). For +start+ and +range+ cases the starting index is just before
799
+ * an element. Additionally, an empty array is returned when the starting
800
+ * index for an element range is at the end of the array.
801
+ *
802
+ * Returns +nil+ if the index (or starting index) are out of range.
803
+ *
804
+ * a = [ "a", "b", "c", "d", "e" ]
805
+ * a[1] => "b"
806
+ * a[1,2] => ["b", "c"]
807
+ * a[1..-2] => ["b", "c", "d"]
808
+ *
809
+ */
810
+
811
+ static mrb_value
812
+ mrb_ary_aget(mrb_state *mrb, mrb_value self)
813
+ {
814
+ struct RArray *a = mrb_ary_ptr(self);
815
+ mrb_int i, len, alen = ARY_LEN(a);
816
+ mrb_value index;
817
+
818
+ if (mrb_get_args(mrb, "o|i", &index, &len) == 1) {
819
+ switch (mrb_type(index)) {
820
+ /* a[n..m] */
821
+ case MRB_TT_RANGE:
822
+ if (mrb_range_beg_len(mrb, index, &i, &len, alen, TRUE) == 1) {
823
+ return ary_subseq(mrb, a, i, len);
824
+ }
825
+ else {
826
+ return mrb_nil_value();
827
+ }
828
+ case MRB_TT_FIXNUM:
829
+ return mrb_ary_ref(mrb, self, mrb_fixnum(index));
830
+ default:
831
+ return mrb_ary_ref(mrb, self, aget_index(mrb, index));
832
+ }
833
+ }
834
+
835
+ i = aget_index(mrb, index);
836
+ if (i < 0) i += alen;
837
+ if (i < 0 || alen < i) return mrb_nil_value();
838
+ if (len < 0) return mrb_nil_value();
839
+ if (alen == i) return mrb_ary_new(mrb);
840
+ if (len > alen - i) len = alen - i;
841
+
842
+ return ary_subseq(mrb, a, i, len);
843
+ }
844
+
845
+ /*
846
+ * call-seq:
847
+ * ary[index] = obj -> obj
848
+ * ary[start, length] = obj or other_ary or nil -> obj or other_ary or nil
849
+ * ary[range] = obj or other_ary or nil -> obj or other_ary or nil
850
+ *
851
+ * Element Assignment --- Sets the element at +index+, or replaces a subarray
852
+ * from the +start+ index for +length+ elements, or replaces a subarray
853
+ * specified by the +range+ of indices.
854
+ *
855
+ * If indices are greater than the current capacity of the array, the array
856
+ * grows automatically. Elements are inserted into the array at +start+ if
857
+ * +length+ is zero.
858
+ *
859
+ * Negative indices will count backward from the end of the array. For
860
+ * +start+ and +range+ cases the starting index is just before an element.
861
+ *
862
+ * An IndexError is raised if a negative index points past the beginning of
863
+ * the array.
864
+ *
865
+ * See also Array#push, and Array#unshift.
866
+ *
867
+ * a = Array.new
868
+ * a[4] = "4"; #=> [nil, nil, nil, nil, "4"]
869
+ * a[0, 3] = [ 'a', 'b', 'c' ] #=> ["a", "b", "c", nil, "4"]
870
+ * a[1..2] = [ 1, 2 ] #=> ["a", 1, 2, nil, "4"]
871
+ * a[0, 2] = "?" #=> ["?", 2, nil, "4"]
872
+ * a[0..2] = "A" #=> ["A", "4"]
873
+ * a[-1] = "Z" #=> ["A", "Z"]
874
+ * a[1..-1] = nil #=> ["A", nil]
875
+ * a[1..-1] = [] #=> ["A"]
876
+ * a[0, 0] = [ 1, 2 ] #=> [1, 2, "A"]
877
+ * a[3, 0] = "B" #=> [1, 2, "A", "B"]
878
+ */
879
+
880
+ static mrb_value
881
+ mrb_ary_aset(mrb_state *mrb, mrb_value self)
882
+ {
883
+ mrb_value v1, v2, v3;
884
+ mrb_int i, len;
885
+
886
+ mrb_ary_modify(mrb, mrb_ary_ptr(self));
887
+ if (mrb_get_args(mrb, "oo|o", &v1, &v2, &v3) == 2) {
888
+ /* a[n..m] = v */
889
+ switch (mrb_range_beg_len(mrb, v1, &i, &len, RARRAY_LEN(self), FALSE)) {
890
+ case 0: /* not range */
891
+ mrb_ary_set(mrb, self, aget_index(mrb, v1), v2);
892
+ break;
893
+ case 1: /* range */
894
+ mrb_ary_splice(mrb, self, i, len, v2);
895
+ break;
896
+ case 2: /* out of range */
897
+ mrb_raisef(mrb, E_RANGE_ERROR, "%S out of range", v1);
898
+ break;
899
+ }
900
+ return v2;
901
+ }
902
+
903
+ /* a[n,m] = v */
904
+ mrb_ary_splice(mrb, self, aget_index(mrb, v1), aget_index(mrb, v2), v3);
905
+ return v3;
906
+ }
907
+
908
+ static mrb_value
909
+ mrb_ary_delete_at(mrb_state *mrb, mrb_value self)
910
+ {
911
+ struct RArray *a = mrb_ary_ptr(self);
912
+ mrb_int index;
913
+ mrb_value val;
914
+ mrb_value *ptr;
915
+ mrb_int len, alen = ARY_LEN(a);
916
+
917
+ mrb_get_args(mrb, "i", &index);
918
+ if (index < 0) index += alen;
919
+ if (index < 0 || alen <= index) return mrb_nil_value();
920
+
921
+ ary_modify(mrb, a);
922
+ ptr = ARY_PTR(a);
923
+ val = ptr[index];
924
+
925
+ ptr += index;
926
+ len = alen - index;
927
+ while (--len) {
928
+ *ptr = *(ptr+1);
929
+ ++ptr;
930
+ }
931
+ ARY_SET_LEN(a, alen-1);
932
+
933
+ ary_shrink_capa(mrb, a);
934
+
935
+ return val;
936
+ }
937
+
938
+ static mrb_value
939
+ mrb_ary_first(mrb_state *mrb, mrb_value self)
940
+ {
941
+ struct RArray *a = mrb_ary_ptr(self);
942
+ mrb_int size, alen = ARY_LEN(a);
943
+
944
+ if (mrb_get_argc(mrb) == 0) {
945
+ return (alen > 0)? ARY_PTR(a)[0]: mrb_nil_value();
946
+ }
947
+ mrb_get_args(mrb, "|i", &size);
948
+ if (size < 0) {
949
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "negative array size");
950
+ }
951
+
952
+ if (size > alen) size = alen;
953
+ if (ARY_SHARED_P(a)) {
954
+ return ary_subseq(mrb, a, 0, size);
955
+ }
956
+ return mrb_ary_new_from_values(mrb, size, ARY_PTR(a));
957
+ }
958
+
959
+ static mrb_value
960
+ mrb_ary_last(mrb_state *mrb, mrb_value self)
961
+ {
962
+ struct RArray *a = mrb_ary_ptr(self);
963
+ mrb_int size, alen = ARY_LEN(a);
964
+
965
+ if (mrb_get_args(mrb, "|i", &size) == 0)
966
+ return (alen > 0)? ARY_PTR(a)[alen - 1]: mrb_nil_value();
967
+
968
+ if (size < 0) {
969
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "negative array size");
970
+ }
971
+ if (size > alen) size = alen;
972
+ if (ARY_SHARED_P(a) || size > ARY_DEFAULT_LEN) {
973
+ return ary_subseq(mrb, a, alen - size, size);
974
+ }
975
+ return mrb_ary_new_from_values(mrb, size, ARY_PTR(a) + alen - size);
976
+ }
977
+
978
+ static mrb_value
979
+ mrb_ary_index_m(mrb_state *mrb, mrb_value self)
980
+ {
981
+ mrb_value obj;
982
+ mrb_int i;
983
+
984
+ mrb_get_args(mrb, "o", &obj);
985
+ for (i = 0; i < RARRAY_LEN(self); i++) {
986
+ if (mrb_equal(mrb, RARRAY_PTR(self)[i], obj)) {
987
+ return mrb_fixnum_value(i);
988
+ }
989
+ }
990
+ return mrb_nil_value();
991
+ }
992
+
993
+ static mrb_value
994
+ mrb_ary_rindex_m(mrb_state *mrb, mrb_value self)
995
+ {
996
+ mrb_value obj;
997
+ mrb_int i, len;
998
+
999
+ mrb_get_args(mrb, "o", &obj);
1000
+ for (i = RARRAY_LEN(self) - 1; i >= 0; i--) {
1001
+ if (mrb_equal(mrb, RARRAY_PTR(self)[i], obj)) {
1002
+ return mrb_fixnum_value(i);
1003
+ }
1004
+ if (i > (len = RARRAY_LEN(self))) {
1005
+ i = len;
1006
+ }
1007
+ }
1008
+ return mrb_nil_value();
1009
+ }
1010
+
1011
+ MRB_API mrb_value
1012
+ mrb_ary_splat(mrb_state *mrb, mrb_value v)
1013
+ {
1014
+ mrb_value a, recv_class;
1015
+
1016
+ if (mrb_array_p(v)) {
1017
+ return v;
1018
+ }
1019
+
1020
+ if (!mrb_respond_to(mrb, v, mrb_intern_lit(mrb, "to_a"))) {
1021
+ return mrb_ary_new_from_values(mrb, 1, &v);
1022
+ }
1023
+
1024
+ a = mrb_funcall(mrb, v, "to_a", 0);
1025
+ if (mrb_array_p(a)) {
1026
+ return a;
1027
+ }
1028
+ else if (mrb_nil_p(a)) {
1029
+ return mrb_ary_new_from_values(mrb, 1, &v);
1030
+ }
1031
+ else {
1032
+ recv_class = mrb_obj_value(mrb_obj_class(mrb, v));
1033
+ mrb_raisef(mrb, E_TYPE_ERROR, "can't convert %S to Array (%S#to_a gives %S)",
1034
+ recv_class,
1035
+ recv_class,
1036
+ mrb_obj_value(mrb_obj_class(mrb, a))
1037
+ );
1038
+ /* not reached */
1039
+ return mrb_undef_value();
1040
+ }
1041
+ }
1042
+
1043
+ static mrb_value
1044
+ mrb_ary_size(mrb_state *mrb, mrb_value self)
1045
+ {
1046
+ struct RArray *a = mrb_ary_ptr(self);
1047
+
1048
+ return mrb_fixnum_value(ARY_LEN(a));
1049
+ }
1050
+
1051
+ MRB_API mrb_value
1052
+ mrb_ary_clear(mrb_state *mrb, mrb_value self)
1053
+ {
1054
+ struct RArray *a = mrb_ary_ptr(self);
1055
+
1056
+ ary_modify(mrb, a);
1057
+ if (ARY_SHARED_P(a)) {
1058
+ mrb_ary_decref(mrb, a->as.heap.aux.shared);
1059
+ ARY_UNSET_SHARED_FLAG(a);
1060
+ }
1061
+ else if (!ARY_EMBED_P(a)){
1062
+ mrb_free(mrb, a->as.heap.ptr);
1063
+ }
1064
+ ARY_SET_EMBED_LEN(a, 0);
1065
+
1066
+ return self;
1067
+ }
1068
+
1069
+ static mrb_value
1070
+ mrb_ary_empty_p(mrb_state *mrb, mrb_value self)
1071
+ {
1072
+ struct RArray *a = mrb_ary_ptr(self);
1073
+
1074
+ return mrb_bool_value(ARY_LEN(a) == 0);
1075
+ }
1076
+
1077
+ MRB_API mrb_value
1078
+ mrb_check_array_type(mrb_state *mrb, mrb_value ary)
1079
+ {
1080
+ return mrb_check_convert_type(mrb, ary, MRB_TT_ARRAY, "Array", "to_ary");
1081
+ }
1082
+
1083
+ MRB_API mrb_value
1084
+ mrb_ary_entry(mrb_value ary, mrb_int offset)
1085
+ {
1086
+ if (offset < 0) {
1087
+ offset += RARRAY_LEN(ary);
1088
+ }
1089
+ if (offset < 0 || RARRAY_LEN(ary) <= offset) {
1090
+ return mrb_nil_value();
1091
+ }
1092
+ return RARRAY_PTR(ary)[offset];
1093
+ }
1094
+
1095
+ static mrb_value
1096
+ join_ary(mrb_state *mrb, mrb_value ary, mrb_value sep, mrb_value list)
1097
+ {
1098
+ mrb_int i;
1099
+ mrb_value result, val, tmp;
1100
+
1101
+ /* check recursive */
1102
+ for (i=0; i<RARRAY_LEN(list); i++) {
1103
+ if (mrb_obj_equal(mrb, ary, RARRAY_PTR(list)[i])) {
1104
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "recursive array join");
1105
+ }
1106
+ }
1107
+
1108
+ mrb_ary_push(mrb, list, ary);
1109
+
1110
+ result = mrb_str_new_capa(mrb, 64);
1111
+
1112
+ for (i=0; i<RARRAY_LEN(ary); i++) {
1113
+ if (i > 0 && !mrb_nil_p(sep)) {
1114
+ mrb_str_cat_str(mrb, result, sep);
1115
+ }
1116
+
1117
+ val = RARRAY_PTR(ary)[i];
1118
+ switch (mrb_type(val)) {
1119
+ case MRB_TT_ARRAY:
1120
+ ary_join:
1121
+ val = join_ary(mrb, val, sep, list);
1122
+ /* fall through */
1123
+
1124
+ case MRB_TT_STRING:
1125
+ str_join:
1126
+ mrb_str_cat_str(mrb, result, val);
1127
+ break;
1128
+
1129
+ default:
1130
+ if (!mrb_immediate_p(val)) {
1131
+ tmp = mrb_check_string_type(mrb, val);
1132
+ if (!mrb_nil_p(tmp)) {
1133
+ val = tmp;
1134
+ goto str_join;
1135
+ }
1136
+ tmp = mrb_check_convert_type(mrb, val, MRB_TT_ARRAY, "Array", "to_ary");
1137
+ if (!mrb_nil_p(tmp)) {
1138
+ val = tmp;
1139
+ goto ary_join;
1140
+ }
1141
+ }
1142
+ val = mrb_obj_as_string(mrb, val);
1143
+ goto str_join;
1144
+ }
1145
+ }
1146
+
1147
+ mrb_ary_pop(mrb, list);
1148
+
1149
+ return result;
1150
+ }
1151
+
1152
+ MRB_API mrb_value
1153
+ mrb_ary_join(mrb_state *mrb, mrb_value ary, mrb_value sep)
1154
+ {
1155
+ if (!mrb_nil_p(sep)) {
1156
+ sep = mrb_obj_as_string(mrb, sep);
1157
+ }
1158
+ return join_ary(mrb, ary, sep, mrb_ary_new(mrb));
1159
+ }
1160
+
1161
+ /*
1162
+ * call-seq:
1163
+ * ary.join(sep="") -> str
1164
+ *
1165
+ * Returns a string created by converting each element of the array to
1166
+ * a string, separated by <i>sep</i>.
1167
+ *
1168
+ * [ "a", "b", "c" ].join #=> "abc"
1169
+ * [ "a", "b", "c" ].join("-") #=> "a-b-c"
1170
+ */
1171
+
1172
+ static mrb_value
1173
+ mrb_ary_join_m(mrb_state *mrb, mrb_value ary)
1174
+ {
1175
+ mrb_value sep = mrb_nil_value();
1176
+
1177
+ mrb_get_args(mrb, "|S!", &sep);
1178
+ return mrb_ary_join(mrb, ary, sep);
1179
+ }
1180
+
1181
+ static mrb_value
1182
+ mrb_ary_eq(mrb_state *mrb, mrb_value ary1)
1183
+ {
1184
+ mrb_value ary2;
1185
+
1186
+ mrb_get_args(mrb, "o", &ary2);
1187
+ if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value();
1188
+ if (!mrb_array_p(ary2)) {
1189
+ return mrb_false_value();
1190
+ }
1191
+ if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return mrb_false_value();
1192
+
1193
+ return ary2;
1194
+ }
1195
+
1196
+ static mrb_value
1197
+ mrb_ary_cmp(mrb_state *mrb, mrb_value ary1)
1198
+ {
1199
+ mrb_value ary2;
1200
+
1201
+ mrb_get_args(mrb, "o", &ary2);
1202
+ if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_fixnum_value(0);
1203
+ if (!mrb_array_p(ary2)) {
1204
+ return mrb_nil_value();
1205
+ }
1206
+
1207
+ return ary2;
1208
+ }
1209
+
1210
+ void
1211
+ mrb_init_array(mrb_state *mrb)
1212
+ {
1213
+ struct RClass *a;
1214
+
1215
+ mrb->array_class = a = mrb_define_class(mrb, "Array", mrb->object_class); /* 15.2.12 */
1216
+ MRB_SET_INSTANCE_TT(a, MRB_TT_ARRAY);
1217
+
1218
+ mrb_define_class_method(mrb, a, "[]", mrb_ary_s_create, MRB_ARGS_ANY()); /* 15.2.12.4.1 */
1219
+
1220
+ mrb_define_method(mrb, a, "+", mrb_ary_plus, MRB_ARGS_REQ(1)); /* 15.2.12.5.1 */
1221
+ mrb_define_method(mrb, a, "*", mrb_ary_times, MRB_ARGS_REQ(1)); /* 15.2.12.5.2 */
1222
+ mrb_define_method(mrb, a, "<<", mrb_ary_push_m, MRB_ARGS_REQ(1)); /* 15.2.12.5.3 */
1223
+ mrb_define_method(mrb, a, "[]", mrb_ary_aget, MRB_ARGS_ANY()); /* 15.2.12.5.4 */
1224
+ mrb_define_method(mrb, a, "[]=", mrb_ary_aset, MRB_ARGS_ANY()); /* 15.2.12.5.5 */
1225
+ mrb_define_method(mrb, a, "clear", mrb_ary_clear, MRB_ARGS_NONE()); /* 15.2.12.5.6 */
1226
+ mrb_define_method(mrb, a, "concat", mrb_ary_concat_m, MRB_ARGS_REQ(1)); /* 15.2.12.5.8 */
1227
+ mrb_define_method(mrb, a, "delete_at", mrb_ary_delete_at, MRB_ARGS_REQ(1)); /* 15.2.12.5.9 */
1228
+ mrb_define_method(mrb, a, "empty?", mrb_ary_empty_p, MRB_ARGS_NONE()); /* 15.2.12.5.12 */
1229
+ mrb_define_method(mrb, a, "first", mrb_ary_first, MRB_ARGS_OPT(1)); /* 15.2.12.5.13 */
1230
+ mrb_define_method(mrb, a, "index", mrb_ary_index_m, MRB_ARGS_REQ(1)); /* 15.2.12.5.14 */
1231
+ mrb_define_method(mrb, a, "initialize_copy", mrb_ary_replace_m, MRB_ARGS_REQ(1)); /* 15.2.12.5.16 */
1232
+ mrb_define_method(mrb, a, "join", mrb_ary_join_m, MRB_ARGS_ANY()); /* 15.2.12.5.17 */
1233
+ mrb_define_method(mrb, a, "last", mrb_ary_last, MRB_ARGS_ANY()); /* 15.2.12.5.18 */
1234
+ mrb_define_method(mrb, a, "length", mrb_ary_size, MRB_ARGS_NONE()); /* 15.2.12.5.19 */
1235
+ mrb_define_method(mrb, a, "pop", mrb_ary_pop, MRB_ARGS_NONE()); /* 15.2.12.5.21 */
1236
+ mrb_define_method(mrb, a, "push", mrb_ary_push_m, MRB_ARGS_ANY()); /* 15.2.12.5.22 */
1237
+ mrb_define_method(mrb, a, "append", mrb_ary_push_m, MRB_ARGS_ANY());
1238
+ mrb_define_method(mrb, a, "replace", mrb_ary_replace_m, MRB_ARGS_REQ(1)); /* 15.2.12.5.23 */
1239
+ mrb_define_method(mrb, a, "reverse", mrb_ary_reverse, MRB_ARGS_NONE()); /* 15.2.12.5.24 */
1240
+ mrb_define_method(mrb, a, "reverse!", mrb_ary_reverse_bang, MRB_ARGS_NONE()); /* 15.2.12.5.25 */
1241
+ mrb_define_method(mrb, a, "rindex", mrb_ary_rindex_m, MRB_ARGS_REQ(1)); /* 15.2.12.5.26 */
1242
+ mrb_define_method(mrb, a, "shift", mrb_ary_shift, MRB_ARGS_NONE()); /* 15.2.12.5.27 */
1243
+ mrb_define_method(mrb, a, "size", mrb_ary_size, MRB_ARGS_NONE()); /* 15.2.12.5.28 */
1244
+ mrb_define_method(mrb, a, "slice", mrb_ary_aget, MRB_ARGS_ANY()); /* 15.2.12.5.29 */
1245
+ mrb_define_method(mrb, a, "unshift", mrb_ary_unshift_m, MRB_ARGS_ANY()); /* 15.2.12.5.30 */
1246
+ mrb_define_method(mrb, a, "prepend", mrb_ary_unshift_m, MRB_ARGS_ANY());
1247
+
1248
+ mrb_define_method(mrb, a, "__ary_eq", mrb_ary_eq, MRB_ARGS_REQ(1));
1249
+ mrb_define_method(mrb, a, "__ary_cmp", mrb_ary_cmp, MRB_ARGS_REQ(1));
1250
+ mrb_define_method(mrb, a, "__ary_index", mrb_ary_index_m, MRB_ARGS_REQ(1)); /* kept for mruby-array-ext */
1251
+ }