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,51 @@
1
+ /*
2
+ ** init.c - initialize mruby core
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #include <mruby.h>
8
+
9
+ void mrb_init_symtbl(mrb_state*);
10
+ void mrb_init_class(mrb_state*);
11
+ void mrb_init_object(mrb_state*);
12
+ void mrb_init_kernel(mrb_state*);
13
+ void mrb_init_comparable(mrb_state*);
14
+ void mrb_init_enumerable(mrb_state*);
15
+ void mrb_init_symbol(mrb_state*);
16
+ void mrb_init_string(mrb_state*);
17
+ void mrb_init_exception(mrb_state*);
18
+ void mrb_init_proc(mrb_state*);
19
+ void mrb_init_array(mrb_state*);
20
+ void mrb_init_hash(mrb_state*);
21
+ void mrb_init_numeric(mrb_state*);
22
+ void mrb_init_range(mrb_state*);
23
+ void mrb_init_gc(mrb_state*);
24
+ void mrb_init_math(mrb_state*);
25
+ void mrb_init_version(mrb_state*);
26
+ void mrb_init_mrblib(mrb_state*);
27
+
28
+ #define DONE mrb_gc_arena_restore(mrb, 0);
29
+ void
30
+ mrb_init_core(mrb_state *mrb)
31
+ {
32
+ mrb_init_symtbl(mrb); DONE;
33
+
34
+ mrb_init_class(mrb); DONE;
35
+ mrb_init_object(mrb); DONE;
36
+ mrb_init_kernel(mrb); DONE;
37
+ mrb_init_comparable(mrb); DONE;
38
+ mrb_init_enumerable(mrb); DONE;
39
+
40
+ mrb_init_symbol(mrb); DONE;
41
+ mrb_init_string(mrb); DONE;
42
+ mrb_init_exception(mrb); DONE;
43
+ mrb_init_proc(mrb); DONE;
44
+ mrb_init_array(mrb); DONE;
45
+ mrb_init_hash(mrb); DONE;
46
+ mrb_init_numeric(mrb); DONE;
47
+ mrb_init_range(mrb); DONE;
48
+ mrb_init_gc(mrb); DONE;
49
+ mrb_init_version(mrb); DONE;
50
+ mrb_init_mrblib(mrb); DONE;
51
+ }
@@ -0,0 +1,1264 @@
1
+ /*
2
+ ** kernel.c - Kernel module
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #include <mruby.h>
8
+ #include <mruby/array.h>
9
+ #include <mruby/hash.h>
10
+ #include <mruby/class.h>
11
+ #include <mruby/proc.h>
12
+ #include <mruby/string.h>
13
+ #include <mruby/variable.h>
14
+ #include <mruby/error.h>
15
+ #include <mruby/istruct.h>
16
+
17
+ typedef enum {
18
+ NOEX_PUBLIC = 0x00,
19
+ NOEX_NOSUPER = 0x01,
20
+ NOEX_PRIVATE = 0x02,
21
+ NOEX_PROTECTED = 0x04,
22
+ NOEX_MASK = 0x06,
23
+ NOEX_BASIC = 0x08,
24
+ NOEX_UNDEF = NOEX_NOSUPER,
25
+ NOEX_MODFUNC = 0x12,
26
+ NOEX_SUPER = 0x20,
27
+ NOEX_VCALL = 0x40,
28
+ NOEX_RESPONDS = 0x80
29
+ } mrb_method_flag_t;
30
+
31
+ MRB_API mrb_bool
32
+ mrb_func_basic_p(mrb_state *mrb, mrb_value obj, mrb_sym mid, mrb_func_t func)
33
+ {
34
+ mrb_method_t m = mrb_method_search(mrb, mrb_class(mrb, obj), mid);
35
+ struct RProc *p;
36
+
37
+ if (MRB_METHOD_UNDEF_P(m)) return FALSE;
38
+ if (MRB_METHOD_FUNC_P(m))
39
+ return MRB_METHOD_FUNC(m) == func;
40
+ p = MRB_METHOD_PROC(m);
41
+ if (MRB_PROC_CFUNC_P(p) && (MRB_PROC_CFUNC(p) == func))
42
+ return TRUE;
43
+ return FALSE;
44
+ }
45
+
46
+ static mrb_bool
47
+ mrb_obj_basic_to_s_p(mrb_state *mrb, mrb_value obj)
48
+ {
49
+ return mrb_func_basic_p(mrb, obj, mrb_intern_lit(mrb, "to_s"), mrb_any_to_s);
50
+ }
51
+
52
+ /* 15.3.1.3.17 */
53
+ /*
54
+ * call-seq:
55
+ * obj.inspect -> string
56
+ *
57
+ * Returns a string containing a human-readable representation of
58
+ * <i>obj</i>. If not overridden and no instance variables, uses the
59
+ * <code>to_s</code> method to generate the string.
60
+ * <i>obj</i>. If not overridden, uses the <code>to_s</code> method to
61
+ * generate the string.
62
+ *
63
+ * [ 1, 2, 3..4, 'five' ].inspect #=> "[1, 2, 3..4, \"five\"]"
64
+ * Time.new.inspect #=> "2008-03-08 19:43:39 +0900"
65
+ */
66
+ MRB_API mrb_value
67
+ mrb_obj_inspect(mrb_state *mrb, mrb_value obj)
68
+ {
69
+ if ((mrb_type(obj) == MRB_TT_OBJECT) && mrb_obj_basic_to_s_p(mrb, obj)) {
70
+ return mrb_obj_iv_inspect(mrb, mrb_obj_ptr(obj));
71
+ }
72
+ return mrb_any_to_s(mrb, obj);
73
+ }
74
+
75
+ /* 15.3.1.3.2 */
76
+ /*
77
+ * call-seq:
78
+ * obj === other -> true or false
79
+ *
80
+ * Case Equality---For class <code>Object</code>, effectively the same
81
+ * as calling <code>#==</code>, but typically overridden by descendants
82
+ * to provide meaningful semantics in <code>case</code> statements.
83
+ */
84
+ static mrb_value
85
+ mrb_equal_m(mrb_state *mrb, mrb_value self)
86
+ {
87
+ mrb_value arg;
88
+
89
+ mrb_get_args(mrb, "o", &arg);
90
+ return mrb_bool_value(mrb_equal(mrb, self, arg));
91
+ }
92
+
93
+ /* 15.3.1.3.3 */
94
+ /* 15.3.1.3.33 */
95
+ /*
96
+ * Document-method: __id__
97
+ * Document-method: object_id
98
+ *
99
+ * call-seq:
100
+ * obj.__id__ -> fixnum
101
+ * obj.object_id -> fixnum
102
+ *
103
+ * Returns an integer identifier for <i>obj</i>. The same number will
104
+ * be returned on all calls to <code>id</code> for a given object, and
105
+ * no two active objects will share an id.
106
+ * <code>Object#object_id</code> is a different concept from the
107
+ * <code>:name</code> notation, which returns the symbol id of
108
+ * <code>name</code>. Replaces the deprecated <code>Object#id</code>.
109
+ */
110
+ mrb_value
111
+ mrb_obj_id_m(mrb_state *mrb, mrb_value self)
112
+ {
113
+ return mrb_fixnum_value(mrb_obj_id(self));
114
+ }
115
+
116
+ /* 15.3.1.2.2 */
117
+ /* 15.3.1.2.5 */
118
+ /* 15.3.1.3.6 */
119
+ /* 15.3.1.3.25 */
120
+ /*
121
+ * call-seq:
122
+ * block_given? -> true or false
123
+ * iterator? -> true or false
124
+ *
125
+ * Returns <code>true</code> if <code>yield</code> would execute a
126
+ * block in the current context. The <code>iterator?</code> form
127
+ * is mildly deprecated.
128
+ *
129
+ * def try
130
+ * if block_given?
131
+ * yield
132
+ * else
133
+ * "no block"
134
+ * end
135
+ * end
136
+ * try #=> "no block"
137
+ * try { "hello" } #=> "hello"
138
+ * try do "hello" end #=> "hello"
139
+ */
140
+ static mrb_value
141
+ mrb_f_block_given_p_m(mrb_state *mrb, mrb_value self)
142
+ {
143
+ mrb_callinfo *ci = &mrb->c->ci[-1];
144
+ mrb_callinfo *cibase = mrb->c->cibase;
145
+ mrb_value *bp;
146
+ struct RProc *p;
147
+
148
+ if (ci <= cibase) {
149
+ /* toplevel does not have block */
150
+ return mrb_false_value();
151
+ }
152
+ p = ci->proc;
153
+ /* search method/class/module proc */
154
+ while (p) {
155
+ if (MRB_PROC_SCOPE_P(p)) break;
156
+ p = p->upper;
157
+ }
158
+ if (p == NULL) return mrb_false_value();
159
+ /* search ci corresponding to proc */
160
+ while (cibase < ci) {
161
+ if (ci->proc == p) break;
162
+ ci--;
163
+ }
164
+ if (ci == cibase) {
165
+ return mrb_false_value();
166
+ }
167
+ else if (ci->env) {
168
+ struct REnv *e = ci->env;
169
+ int bidx;
170
+
171
+ /* top-level does not have block slot (always false) */
172
+ if (e->stack == mrb->c->stbase)
173
+ return mrb_false_value();
174
+ /* use saved block arg position */
175
+ bidx = MRB_ENV_BIDX(e);
176
+ /* bidx may be useless (e.g. define_method) */
177
+ if (bidx >= MRB_ENV_STACK_LEN(e))
178
+ return mrb_false_value();
179
+ bp = &e->stack[bidx];
180
+ }
181
+ else {
182
+ bp = ci[1].stackent+1;
183
+ if (ci->argc >= 0) {
184
+ bp += ci->argc;
185
+ }
186
+ else {
187
+ bp++;
188
+ }
189
+ }
190
+ if (mrb_nil_p(*bp))
191
+ return mrb_false_value();
192
+ return mrb_true_value();
193
+ }
194
+
195
+ /* 15.3.1.3.7 */
196
+ /*
197
+ * call-seq:
198
+ * obj.class -> class
199
+ *
200
+ * Returns the class of <i>obj</i>. This method must always be
201
+ * called with an explicit receiver, as <code>class</code> is also a
202
+ * reserved word in Ruby.
203
+ *
204
+ * 1.class #=> Fixnum
205
+ * self.class #=> Object
206
+ */
207
+ static mrb_value
208
+ mrb_obj_class_m(mrb_state *mrb, mrb_value self)
209
+ {
210
+ return mrb_obj_value(mrb_obj_class(mrb, self));
211
+ }
212
+
213
+ static struct RClass*
214
+ mrb_singleton_class_clone(mrb_state *mrb, mrb_value obj)
215
+ {
216
+ struct RClass *klass = mrb_basic_ptr(obj)->c;
217
+
218
+ if (klass->tt != MRB_TT_SCLASS)
219
+ return klass;
220
+ else {
221
+ /* copy singleton(unnamed) class */
222
+ struct RClass *clone = (struct RClass*)mrb_obj_alloc(mrb, klass->tt, mrb->class_class);
223
+
224
+ switch (mrb_type(obj)) {
225
+ case MRB_TT_CLASS:
226
+ case MRB_TT_SCLASS:
227
+ break;
228
+ default:
229
+ clone->c = mrb_singleton_class_clone(mrb, mrb_obj_value(klass));
230
+ break;
231
+ }
232
+ clone->super = klass->super;
233
+ if (klass->iv) {
234
+ mrb_iv_copy(mrb, mrb_obj_value(clone), mrb_obj_value(klass));
235
+ mrb_obj_iv_set(mrb, (struct RObject*)clone, mrb_intern_lit(mrb, "__attached__"), obj);
236
+ }
237
+ if (klass->mt) {
238
+ clone->mt = kh_copy(mt, mrb, klass->mt);
239
+ }
240
+ else {
241
+ clone->mt = kh_init(mt, mrb);
242
+ }
243
+ clone->tt = MRB_TT_SCLASS;
244
+ return clone;
245
+ }
246
+ }
247
+
248
+ static void
249
+ copy_class(mrb_state *mrb, mrb_value dst, mrb_value src)
250
+ {
251
+ struct RClass *dc = mrb_class_ptr(dst);
252
+ struct RClass *sc = mrb_class_ptr(src);
253
+ /* if the origin is not the same as the class, then the origin and
254
+ the current class need to be copied */
255
+ if (sc->flags & MRB_FLAG_IS_PREPENDED) {
256
+ struct RClass *c0 = sc->super;
257
+ struct RClass *c1 = dc;
258
+
259
+ /* copy prepended iclasses */
260
+ while (!(c0->flags & MRB_FLAG_IS_ORIGIN)) {
261
+ c1->super = mrb_class_ptr(mrb_obj_dup(mrb, mrb_obj_value(c0)));
262
+ c1 = c1->super;
263
+ c0 = c0->super;
264
+ }
265
+ c1->super = mrb_class_ptr(mrb_obj_dup(mrb, mrb_obj_value(c0)));
266
+ c1->super->flags |= MRB_FLAG_IS_ORIGIN;
267
+ }
268
+ if (sc->mt) {
269
+ dc->mt = kh_copy(mt, mrb, sc->mt);
270
+ }
271
+ else {
272
+ dc->mt = kh_init(mt, mrb);
273
+ }
274
+ dc->super = sc->super;
275
+ MRB_SET_INSTANCE_TT(dc, MRB_INSTANCE_TT(sc));
276
+ }
277
+
278
+ static void
279
+ init_copy(mrb_state *mrb, mrb_value dest, mrb_value obj)
280
+ {
281
+ switch (mrb_type(obj)) {
282
+ case MRB_TT_CLASS:
283
+ case MRB_TT_MODULE:
284
+ copy_class(mrb, dest, obj);
285
+ /* fall through */
286
+ case MRB_TT_OBJECT:
287
+ case MRB_TT_SCLASS:
288
+ case MRB_TT_HASH:
289
+ case MRB_TT_DATA:
290
+ case MRB_TT_EXCEPTION:
291
+ mrb_iv_copy(mrb, dest, obj);
292
+ break;
293
+ case MRB_TT_ISTRUCT:
294
+ mrb_istruct_copy(dest, obj);
295
+ break;
296
+
297
+ default:
298
+ break;
299
+ }
300
+ mrb_funcall(mrb, dest, "initialize_copy", 1, obj);
301
+ }
302
+
303
+ /* 15.3.1.3.8 */
304
+ /*
305
+ * call-seq:
306
+ * obj.clone -> an_object
307
+ *
308
+ * Produces a shallow copy of <i>obj</i>---the instance variables of
309
+ * <i>obj</i> are copied, but not the objects they reference. Copies
310
+ * the frozen state of <i>obj</i>. See also the discussion
311
+ * under <code>Object#dup</code>.
312
+ *
313
+ * class Klass
314
+ * attr_accessor :str
315
+ * end
316
+ * s1 = Klass.new #=> #<Klass:0x401b3a38>
317
+ * s1.str = "Hello" #=> "Hello"
318
+ * s2 = s1.clone #=> #<Klass:0x401b3998 @str="Hello">
319
+ * s2.str[1,4] = "i" #=> "i"
320
+ * s1.inspect #=> "#<Klass:0x401b3a38 @str=\"Hi\">"
321
+ * s2.inspect #=> "#<Klass:0x401b3998 @str=\"Hi\">"
322
+ *
323
+ * This method may have class-specific behavior. If so, that
324
+ * behavior will be documented under the #+initialize_copy+ method of
325
+ * the class.
326
+ *
327
+ * Some Class(True False Nil Symbol Fixnum Float) Object cannot clone.
328
+ */
329
+ MRB_API mrb_value
330
+ mrb_obj_clone(mrb_state *mrb, mrb_value self)
331
+ {
332
+ struct RObject *p;
333
+ mrb_value clone;
334
+
335
+ if (mrb_immediate_p(self)) {
336
+ mrb_raisef(mrb, E_TYPE_ERROR, "can't clone %S", self);
337
+ }
338
+ if (mrb_type(self) == MRB_TT_SCLASS) {
339
+ mrb_raise(mrb, E_TYPE_ERROR, "can't clone singleton class");
340
+ }
341
+ p = (struct RObject*)mrb_obj_alloc(mrb, mrb_type(self), mrb_obj_class(mrb, self));
342
+ p->c = mrb_singleton_class_clone(mrb, self);
343
+ mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)p->c);
344
+ clone = mrb_obj_value(p);
345
+ init_copy(mrb, clone, self);
346
+
347
+ return clone;
348
+ }
349
+
350
+ /* 15.3.1.3.9 */
351
+ /*
352
+ * call-seq:
353
+ * obj.dup -> an_object
354
+ *
355
+ * Produces a shallow copy of <i>obj</i>---the instance variables of
356
+ * <i>obj</i> are copied, but not the objects they reference.
357
+ * <code>dup</code> copies the frozen state of <i>obj</i>. See also
358
+ * the discussion under <code>Object#clone</code>. In general,
359
+ * <code>clone</code> and <code>dup</code> may have different semantics
360
+ * in descendant classes. While <code>clone</code> is used to duplicate
361
+ * an object, including its internal state, <code>dup</code> typically
362
+ * uses the class of the descendant object to create the new instance.
363
+ *
364
+ * This method may have class-specific behavior. If so, that
365
+ * behavior will be documented under the #+initialize_copy+ method of
366
+ * the class.
367
+ */
368
+
369
+ MRB_API mrb_value
370
+ mrb_obj_dup(mrb_state *mrb, mrb_value obj)
371
+ {
372
+ struct RBasic *p;
373
+ mrb_value dup;
374
+
375
+ if (mrb_immediate_p(obj)) {
376
+ mrb_raisef(mrb, E_TYPE_ERROR, "can't dup %S", obj);
377
+ }
378
+ if (mrb_type(obj) == MRB_TT_SCLASS) {
379
+ mrb_raise(mrb, E_TYPE_ERROR, "can't dup singleton class");
380
+ }
381
+ p = mrb_obj_alloc(mrb, mrb_type(obj), mrb_obj_class(mrb, obj));
382
+ dup = mrb_obj_value(p);
383
+ init_copy(mrb, dup, obj);
384
+
385
+ return dup;
386
+ }
387
+
388
+ static mrb_value
389
+ mrb_obj_extend(mrb_state *mrb, mrb_int argc, mrb_value *argv, mrb_value obj)
390
+ {
391
+ mrb_int i;
392
+
393
+ if (argc == 0) {
394
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments (at least 1)");
395
+ }
396
+ for (i = 0; i < argc; i++) {
397
+ mrb_check_type(mrb, argv[i], MRB_TT_MODULE);
398
+ }
399
+ while (argc--) {
400
+ mrb_funcall(mrb, argv[argc], "extend_object", 1, obj);
401
+ mrb_funcall(mrb, argv[argc], "extended", 1, obj);
402
+ }
403
+ return obj;
404
+ }
405
+
406
+ /* 15.3.1.3.13 */
407
+ /*
408
+ * call-seq:
409
+ * obj.extend(module, ...) -> obj
410
+ *
411
+ * Adds to _obj_ the instance methods from each module given as a
412
+ * parameter.
413
+ *
414
+ * module Mod
415
+ * def hello
416
+ * "Hello from Mod.\n"
417
+ * end
418
+ * end
419
+ *
420
+ * class Klass
421
+ * def hello
422
+ * "Hello from Klass.\n"
423
+ * end
424
+ * end
425
+ *
426
+ * k = Klass.new
427
+ * k.hello #=> "Hello from Klass.\n"
428
+ * k.extend(Mod) #=> #<Klass:0x401b3bc8>
429
+ * k.hello #=> "Hello from Mod.\n"
430
+ */
431
+ static mrb_value
432
+ mrb_obj_extend_m(mrb_state *mrb, mrb_value self)
433
+ {
434
+ mrb_value *argv;
435
+ mrb_int argc;
436
+
437
+ mrb_get_args(mrb, "*", &argv, &argc);
438
+ return mrb_obj_extend(mrb, argc, argv, self);
439
+ }
440
+
441
+ static mrb_value
442
+ mrb_obj_freeze(mrb_state *mrb, mrb_value self)
443
+ {
444
+ struct RBasic *b;
445
+
446
+ switch (mrb_type(self)) {
447
+ case MRB_TT_FALSE:
448
+ case MRB_TT_TRUE:
449
+ case MRB_TT_FIXNUM:
450
+ case MRB_TT_SYMBOL:
451
+ #ifndef MRB_WITHOUT_FLOAT
452
+ case MRB_TT_FLOAT:
453
+ #endif
454
+ return self;
455
+ default:
456
+ break;
457
+ }
458
+
459
+ b = mrb_basic_ptr(self);
460
+ if (!MRB_FROZEN_P(b)) {
461
+ MRB_SET_FROZEN_FLAG(b);
462
+ }
463
+ return self;
464
+ }
465
+
466
+ static mrb_value
467
+ mrb_obj_frozen(mrb_state *mrb, mrb_value self)
468
+ {
469
+ struct RBasic *b;
470
+
471
+ switch (mrb_type(self)) {
472
+ case MRB_TT_FALSE:
473
+ case MRB_TT_TRUE:
474
+ case MRB_TT_FIXNUM:
475
+ case MRB_TT_SYMBOL:
476
+ #ifndef MRB_WITHOUT_FLOAT
477
+ case MRB_TT_FLOAT:
478
+ #endif
479
+ return mrb_true_value();
480
+ default:
481
+ break;
482
+ }
483
+
484
+ b = mrb_basic_ptr(self);
485
+ if (!MRB_FROZEN_P(b)) {
486
+ return mrb_false_value();
487
+ }
488
+ return mrb_true_value();
489
+ }
490
+
491
+ /* 15.3.1.3.15 */
492
+ /*
493
+ * call-seq:
494
+ * obj.hash -> fixnum
495
+ *
496
+ * Generates a <code>Fixnum</code> hash value for this object. This
497
+ * function must have the property that <code>a.eql?(b)</code> implies
498
+ * <code>a.hash == b.hash</code>. The hash value is used by class
499
+ * <code>Hash</code>. Any hash value that exceeds the capacity of a
500
+ * <code>Fixnum</code> will be truncated before being used.
501
+ */
502
+ MRB_API mrb_value
503
+ mrb_obj_hash(mrb_state *mrb, mrb_value self)
504
+ {
505
+ return mrb_fixnum_value(mrb_obj_id(self));
506
+ }
507
+
508
+ /* 15.3.1.3.16 */
509
+ static mrb_value
510
+ mrb_obj_init_copy(mrb_state *mrb, mrb_value self)
511
+ {
512
+ mrb_value orig;
513
+
514
+ mrb_get_args(mrb, "o", &orig);
515
+ if (mrb_obj_equal(mrb, self, orig)) return self;
516
+ if ((mrb_type(self) != mrb_type(orig)) || (mrb_obj_class(mrb, self) != mrb_obj_class(mrb, orig))) {
517
+ mrb_raise(mrb, E_TYPE_ERROR, "initialize_copy should take same class object");
518
+ }
519
+ return self;
520
+ }
521
+
522
+
523
+ MRB_API mrb_bool
524
+ mrb_obj_is_instance_of(mrb_state *mrb, mrb_value obj, struct RClass* c)
525
+ {
526
+ if (mrb_obj_class(mrb, obj) == c) return TRUE;
527
+ return FALSE;
528
+ }
529
+
530
+ /* 15.3.1.3.19 */
531
+ /*
532
+ * call-seq:
533
+ * obj.instance_of?(class) -> true or false
534
+ *
535
+ * Returns <code>true</code> if <i>obj</i> is an instance of the given
536
+ * class. See also <code>Object#kind_of?</code>.
537
+ */
538
+ static mrb_value
539
+ obj_is_instance_of(mrb_state *mrb, mrb_value self)
540
+ {
541
+ mrb_value arg;
542
+
543
+ mrb_get_args(mrb, "C", &arg);
544
+
545
+ return mrb_bool_value(mrb_obj_is_instance_of(mrb, self, mrb_class_ptr(arg)));
546
+ }
547
+
548
+ /* 15.3.1.3.20 */
549
+ /*
550
+ * call-seq:
551
+ * obj.instance_variable_defined?(symbol) -> true or false
552
+ *
553
+ * Returns <code>true</code> if the given instance variable is
554
+ * defined in <i>obj</i>.
555
+ *
556
+ * class Fred
557
+ * def initialize(p1, p2)
558
+ * @a, @b = p1, p2
559
+ * end
560
+ * end
561
+ * fred = Fred.new('cat', 99)
562
+ * fred.instance_variable_defined?(:@a) #=> true
563
+ * fred.instance_variable_defined?("@b") #=> true
564
+ * fred.instance_variable_defined?("@c") #=> false
565
+ */
566
+ static mrb_value
567
+ mrb_obj_ivar_defined(mrb_state *mrb, mrb_value self)
568
+ {
569
+ mrb_sym sym;
570
+
571
+ mrb_get_args(mrb, "n", &sym);
572
+ mrb_iv_check(mrb, sym);
573
+ return mrb_bool_value(mrb_iv_defined(mrb, self, sym));
574
+ }
575
+
576
+ /* 15.3.1.3.21 */
577
+ /*
578
+ * call-seq:
579
+ * obj.instance_variable_get(symbol) -> obj
580
+ *
581
+ * Returns the value of the given instance variable, or nil if the
582
+ * instance variable is not set. The <code>@</code> part of the
583
+ * variable name should be included for regular instance
584
+ * variables. Throws a <code>NameError</code> exception if the
585
+ * supplied symbol is not valid as an instance variable name.
586
+ *
587
+ * class Fred
588
+ * def initialize(p1, p2)
589
+ * @a, @b = p1, p2
590
+ * end
591
+ * end
592
+ * fred = Fred.new('cat', 99)
593
+ * fred.instance_variable_get(:@a) #=> "cat"
594
+ * fred.instance_variable_get("@b") #=> 99
595
+ */
596
+ static mrb_value
597
+ mrb_obj_ivar_get(mrb_state *mrb, mrb_value self)
598
+ {
599
+ mrb_sym iv_name;
600
+
601
+ mrb_get_args(mrb, "n", &iv_name);
602
+ mrb_iv_check(mrb, iv_name);
603
+ return mrb_iv_get(mrb, self, iv_name);
604
+ }
605
+
606
+ /* 15.3.1.3.22 */
607
+ /*
608
+ * call-seq:
609
+ * obj.instance_variable_set(symbol, obj) -> obj
610
+ *
611
+ * Sets the instance variable names by <i>symbol</i> to
612
+ * <i>object</i>, thereby frustrating the efforts of the class's
613
+ * author to attempt to provide proper encapsulation. The variable
614
+ * did not have to exist prior to this call.
615
+ *
616
+ * class Fred
617
+ * def initialize(p1, p2)
618
+ * @a, @b = p1, p2
619
+ * end
620
+ * end
621
+ * fred = Fred.new('cat', 99)
622
+ * fred.instance_variable_set(:@a, 'dog') #=> "dog"
623
+ * fred.instance_variable_set(:@c, 'cat') #=> "cat"
624
+ * fred.inspect #=> "#<Fred:0x401b3da8 @a=\"dog\", @b=99, @c=\"cat\">"
625
+ */
626
+ static mrb_value
627
+ mrb_obj_ivar_set(mrb_state *mrb, mrb_value self)
628
+ {
629
+ mrb_sym iv_name;
630
+ mrb_value val;
631
+
632
+ mrb_get_args(mrb, "no", &iv_name, &val);
633
+ mrb_iv_check(mrb, iv_name);
634
+ mrb_iv_set(mrb, self, iv_name, val);
635
+ return val;
636
+ }
637
+
638
+ /* 15.3.1.3.24 */
639
+ /* 15.3.1.3.26 */
640
+ /*
641
+ * call-seq:
642
+ * obj.is_a?(class) -> true or false
643
+ * obj.kind_of?(class) -> true or false
644
+ *
645
+ * Returns <code>true</code> if <i>class</i> is the class of
646
+ * <i>obj</i>, or if <i>class</i> is one of the superclasses of
647
+ * <i>obj</i> or modules included in <i>obj</i>.
648
+ *
649
+ * module M; end
650
+ * class A
651
+ * include M
652
+ * end
653
+ * class B < A; end
654
+ * class C < B; end
655
+ * b = B.new
656
+ * b.instance_of? A #=> false
657
+ * b.instance_of? B #=> true
658
+ * b.instance_of? C #=> false
659
+ * b.instance_of? M #=> false
660
+ * b.kind_of? A #=> true
661
+ * b.kind_of? B #=> true
662
+ * b.kind_of? C #=> false
663
+ * b.kind_of? M #=> true
664
+ */
665
+ static mrb_value
666
+ mrb_obj_is_kind_of_m(mrb_state *mrb, mrb_value self)
667
+ {
668
+ mrb_value arg;
669
+
670
+ mrb_get_args(mrb, "C", &arg);
671
+
672
+ return mrb_bool_value(mrb_obj_is_kind_of(mrb, self, mrb_class_ptr(arg)));
673
+ }
674
+
675
+ KHASH_DECLARE(st, mrb_sym, char, FALSE)
676
+ KHASH_DEFINE(st, mrb_sym, char, FALSE, kh_int_hash_func, kh_int_hash_equal)
677
+
678
+ static void
679
+ method_entry_loop(mrb_state *mrb, struct RClass* klass, khash_t(st)* set)
680
+ {
681
+ khint_t i;
682
+
683
+ khash_t(mt) *h = klass->mt;
684
+ if (!h || kh_size(h) == 0) return;
685
+ for (i=0;i<kh_end(h);i++) {
686
+ if (kh_exist(h, i)) {
687
+ mrb_method_t m = kh_value(h, i);
688
+ if (MRB_METHOD_UNDEF_P(m)) continue;
689
+ kh_put(st, mrb, set, kh_key(h, i));
690
+ }
691
+ }
692
+ }
693
+
694
+ mrb_value
695
+ mrb_class_instance_method_list(mrb_state *mrb, mrb_bool recur, struct RClass* klass, int obj)
696
+ {
697
+ khint_t i;
698
+ mrb_value ary;
699
+ mrb_bool prepended = FALSE;
700
+ struct RClass* oldklass;
701
+ khash_t(st)* set = kh_init(st, mrb);
702
+
703
+ if (!recur && (klass->flags & MRB_FLAG_IS_PREPENDED)) {
704
+ MRB_CLASS_ORIGIN(klass);
705
+ prepended = TRUE;
706
+ }
707
+
708
+ oldklass = 0;
709
+ while (klass && (klass != oldklass)) {
710
+ method_entry_loop(mrb, klass, set);
711
+ if ((klass->tt == MRB_TT_ICLASS && !prepended) ||
712
+ (klass->tt == MRB_TT_SCLASS)) {
713
+ }
714
+ else {
715
+ if (!recur) break;
716
+ }
717
+ oldklass = klass;
718
+ klass = klass->super;
719
+ }
720
+
721
+ ary = mrb_ary_new_capa(mrb, kh_size(set));
722
+ for (i=0;i<kh_end(set);i++) {
723
+ if (kh_exist(set, i)) {
724
+ mrb_ary_push(mrb, ary, mrb_symbol_value(kh_key(set, i)));
725
+ }
726
+ }
727
+ kh_destroy(st, mrb, set);
728
+
729
+ return ary;
730
+ }
731
+
732
+ static mrb_value
733
+ mrb_obj_singleton_methods(mrb_state *mrb, mrb_bool recur, mrb_value obj)
734
+ {
735
+ khint_t i;
736
+ mrb_value ary;
737
+ struct RClass* klass;
738
+ khash_t(st)* set = kh_init(st, mrb);
739
+
740
+ klass = mrb_class(mrb, obj);
741
+
742
+ if (klass && (klass->tt == MRB_TT_SCLASS)) {
743
+ method_entry_loop(mrb, klass, set);
744
+ klass = klass->super;
745
+ }
746
+ if (recur) {
747
+ while (klass && ((klass->tt == MRB_TT_SCLASS) || (klass->tt == MRB_TT_ICLASS))) {
748
+ method_entry_loop(mrb, klass, set);
749
+ klass = klass->super;
750
+ }
751
+ }
752
+
753
+ ary = mrb_ary_new(mrb);
754
+ for (i=0;i<kh_end(set);i++) {
755
+ if (kh_exist(set, i)) {
756
+ mrb_ary_push(mrb, ary, mrb_symbol_value(kh_key(set, i)));
757
+ }
758
+ }
759
+ kh_destroy(st, mrb, set);
760
+
761
+ return ary;
762
+ }
763
+
764
+ static mrb_value
765
+ mrb_obj_methods(mrb_state *mrb, mrb_bool recur, mrb_value obj, mrb_method_flag_t flag)
766
+ {
767
+ return mrb_class_instance_method_list(mrb, recur, mrb_class(mrb, obj), 0);
768
+ }
769
+ /* 15.3.1.3.31 */
770
+ /*
771
+ * call-seq:
772
+ * obj.methods -> array
773
+ *
774
+ * Returns a list of the names of methods publicly accessible in
775
+ * <i>obj</i>. This will include all the methods accessible in
776
+ * <i>obj</i>'s ancestors.
777
+ *
778
+ * class Klass
779
+ * def kMethod()
780
+ * end
781
+ * end
782
+ * k = Klass.new
783
+ * k.methods[0..9] #=> [:kMethod, :respond_to?, :nil?, :is_a?,
784
+ * # :class, :instance_variable_set,
785
+ * # :methods, :extend, :__send__, :instance_eval]
786
+ * k.methods.length #=> 42
787
+ */
788
+ static mrb_value
789
+ mrb_obj_methods_m(mrb_state *mrb, mrb_value self)
790
+ {
791
+ mrb_bool recur = TRUE;
792
+ mrb_get_args(mrb, "|b", &recur);
793
+ return mrb_obj_methods(mrb, recur, self, (mrb_method_flag_t)0); /* everything but private */
794
+ }
795
+
796
+ /* 15.3.1.3.32 */
797
+ /*
798
+ * call_seq:
799
+ * nil.nil? -> true
800
+ * <anything_else>.nil? -> false
801
+ *
802
+ * Only the object <i>nil</i> responds <code>true</code> to <code>nil?</code>.
803
+ */
804
+ static mrb_value
805
+ mrb_false(mrb_state *mrb, mrb_value self)
806
+ {
807
+ return mrb_false_value();
808
+ }
809
+
810
+ /* 15.3.1.3.36 */
811
+ /*
812
+ * call-seq:
813
+ * obj.private_methods(all=true) -> array
814
+ *
815
+ * Returns the list of private methods accessible to <i>obj</i>. If
816
+ * the <i>all</i> parameter is set to <code>false</code>, only those methods
817
+ * in the receiver will be listed.
818
+ */
819
+ static mrb_value
820
+ mrb_obj_private_methods(mrb_state *mrb, mrb_value self)
821
+ {
822
+ mrb_bool recur = TRUE;
823
+ mrb_get_args(mrb, "|b", &recur);
824
+ return mrb_obj_methods(mrb, recur, self, NOEX_PRIVATE); /* private attribute not define */
825
+ }
826
+
827
+ /* 15.3.1.3.37 */
828
+ /*
829
+ * call-seq:
830
+ * obj.protected_methods(all=true) -> array
831
+ *
832
+ * Returns the list of protected methods accessible to <i>obj</i>. If
833
+ * the <i>all</i> parameter is set to <code>false</code>, only those methods
834
+ * in the receiver will be listed.
835
+ */
836
+ static mrb_value
837
+ mrb_obj_protected_methods(mrb_state *mrb, mrb_value self)
838
+ {
839
+ mrb_bool recur = TRUE;
840
+ mrb_get_args(mrb, "|b", &recur);
841
+ return mrb_obj_methods(mrb, recur, self, NOEX_PROTECTED); /* protected attribute not define */
842
+ }
843
+
844
+ /* 15.3.1.3.38 */
845
+ /*
846
+ * call-seq:
847
+ * obj.public_methods(all=true) -> array
848
+ *
849
+ * Returns the list of public methods accessible to <i>obj</i>. If
850
+ * the <i>all</i> parameter is set to <code>false</code>, only those methods
851
+ * in the receiver will be listed.
852
+ */
853
+ static mrb_value
854
+ mrb_obj_public_methods(mrb_state *mrb, mrb_value self)
855
+ {
856
+ mrb_bool recur = TRUE;
857
+ mrb_get_args(mrb, "|b", &recur);
858
+ return mrb_obj_methods(mrb, recur, self, NOEX_PUBLIC); /* public attribute not define */
859
+ }
860
+
861
+ /* 15.3.1.2.12 */
862
+ /* 15.3.1.3.40 */
863
+ /*
864
+ * call-seq:
865
+ * raise
866
+ * raise(string)
867
+ * raise(exception [, string])
868
+ *
869
+ * With no arguments, raises a <code>RuntimeError</code>
870
+ * With a single +String+ argument, raises a
871
+ * +RuntimeError+ with the string as a message. Otherwise,
872
+ * the first parameter should be the name of an +Exception+
873
+ * class (or an object that returns an +Exception+ object when sent
874
+ * an +exception+ message). The optional second parameter sets the
875
+ * message associated with the exception, and the third parameter is an
876
+ * array of callback information. Exceptions are caught by the
877
+ * +rescue+ clause of <code>begin...end</code> blocks.
878
+ *
879
+ * raise "Failed to create socket"
880
+ * raise ArgumentError, "No parameters", caller
881
+ */
882
+ MRB_API mrb_value
883
+ mrb_f_raise(mrb_state *mrb, mrb_value self)
884
+ {
885
+ mrb_value a[2], exc;
886
+ mrb_int argc;
887
+
888
+
889
+ argc = mrb_get_args(mrb, "|oo", &a[0], &a[1]);
890
+ switch (argc) {
891
+ case 0:
892
+ mrb_raise(mrb, E_RUNTIME_ERROR, "");
893
+ break;
894
+ case 1:
895
+ if (mrb_string_p(a[0])) {
896
+ a[1] = a[0];
897
+ argc = 2;
898
+ a[0] = mrb_obj_value(E_RUNTIME_ERROR);
899
+ }
900
+ /* fall through */
901
+ default:
902
+ exc = mrb_make_exception(mrb, argc, a);
903
+ mrb_exc_raise(mrb, exc);
904
+ break;
905
+ }
906
+ return mrb_nil_value(); /* not reached */
907
+ }
908
+
909
+ static mrb_value
910
+ mrb_krn_class_defined(mrb_state *mrb, mrb_value self)
911
+ {
912
+ mrb_value str;
913
+
914
+ mrb_get_args(mrb, "S", &str);
915
+ return mrb_bool_value(mrb_class_defined(mrb, RSTRING_PTR(str)));
916
+ }
917
+
918
+
919
+ /* 15.3.1.3.41 */
920
+ /*
921
+ * call-seq:
922
+ * obj.remove_instance_variable(symbol) -> obj
923
+ *
924
+ * Removes the named instance variable from <i>obj</i>, returning that
925
+ * variable's value.
926
+ *
927
+ * class Dummy
928
+ * attr_reader :var
929
+ * def initialize
930
+ * @var = 99
931
+ * end
932
+ * def remove
933
+ * remove_instance_variable(:@var)
934
+ * end
935
+ * end
936
+ * d = Dummy.new
937
+ * d.var #=> 99
938
+ * d.remove #=> 99
939
+ * d.var #=> nil
940
+ */
941
+ static mrb_value
942
+ mrb_obj_remove_instance_variable(mrb_state *mrb, mrb_value self)
943
+ {
944
+ mrb_sym sym;
945
+ mrb_value val;
946
+
947
+ mrb_get_args(mrb, "n", &sym);
948
+ mrb_iv_check(mrb, sym);
949
+ val = mrb_iv_remove(mrb, self, sym);
950
+ if (mrb_undef_p(val)) {
951
+ mrb_name_error(mrb, sym, "instance variable %S not defined", mrb_sym2str(mrb, sym));
952
+ }
953
+ return val;
954
+ }
955
+
956
+ void
957
+ mrb_method_missing(mrb_state *mrb, mrb_sym name, mrb_value self, mrb_value args)
958
+ {
959
+ mrb_no_method_error(mrb, name, args, "undefined method '%S'", mrb_sym2str(mrb, name));
960
+ }
961
+
962
+ /* 15.3.1.3.30 */
963
+ /*
964
+ * call-seq:
965
+ * obj.method_missing(symbol [, *args] ) -> result
966
+ *
967
+ * Invoked by Ruby when <i>obj</i> is sent a message it cannot handle.
968
+ * <i>symbol</i> is the symbol for the method called, and <i>args</i>
969
+ * are any arguments that were passed to it. By default, the interpreter
970
+ * raises an error when this method is called. However, it is possible
971
+ * to override the method to provide more dynamic behavior.
972
+ * If it is decided that a particular method should not be handled, then
973
+ * <i>super</i> should be called, so that ancestors can pick up the
974
+ * missing method.
975
+ * The example below creates
976
+ * a class <code>Roman</code>, which responds to methods with names
977
+ * consisting of roman numerals, returning the corresponding integer
978
+ * values.
979
+ *
980
+ * class Roman
981
+ * def romanToInt(str)
982
+ * # ...
983
+ * end
984
+ * def method_missing(methId)
985
+ * str = methId.id2name
986
+ * romanToInt(str)
987
+ * end
988
+ * end
989
+ *
990
+ * r = Roman.new
991
+ * r.iv #=> 4
992
+ * r.xxiii #=> 23
993
+ * r.mm #=> 2000
994
+ */
995
+ #ifdef MRB_DEFAULT_METHOD_MISSING
996
+ static mrb_value
997
+ mrb_obj_missing(mrb_state *mrb, mrb_value mod)
998
+ {
999
+ mrb_sym name;
1000
+ mrb_value *a;
1001
+ mrb_int alen;
1002
+
1003
+ mrb_get_args(mrb, "n*!", &name, &a, &alen);
1004
+ mrb_method_missing(mrb, name, mod, mrb_ary_new_from_values(mrb, alen, a));
1005
+ /* not reached */
1006
+ return mrb_nil_value();
1007
+ }
1008
+ #endif
1009
+
1010
+ static inline mrb_bool
1011
+ basic_obj_respond_to(mrb_state *mrb, mrb_value obj, mrb_sym id, int pub)
1012
+ {
1013
+ return mrb_respond_to(mrb, obj, id);
1014
+ }
1015
+ /* 15.3.1.3.43 */
1016
+ /*
1017
+ * call-seq:
1018
+ * obj.respond_to?(symbol, include_private=false) -> true or false
1019
+ *
1020
+ * Returns +true+ if _obj_ responds to the given
1021
+ * method. Private methods are included in the search only if the
1022
+ * optional second parameter evaluates to +true+.
1023
+ *
1024
+ * If the method is not implemented,
1025
+ * as Process.fork on Windows, File.lchmod on GNU/Linux, etc.,
1026
+ * false is returned.
1027
+ *
1028
+ * If the method is not defined, <code>respond_to_missing?</code>
1029
+ * method is called and the result is returned.
1030
+ */
1031
+ static mrb_value
1032
+ obj_respond_to(mrb_state *mrb, mrb_value self)
1033
+ {
1034
+ mrb_value mid;
1035
+ mrb_sym id, rtm_id;
1036
+ mrb_bool priv = FALSE, respond_to_p = TRUE;
1037
+
1038
+ mrb_get_args(mrb, "o|b", &mid, &priv);
1039
+
1040
+ if (mrb_symbol_p(mid)) {
1041
+ id = mrb_symbol(mid);
1042
+ }
1043
+ else {
1044
+ mrb_value tmp;
1045
+ if (mrb_string_p(mid)) {
1046
+ tmp = mrb_check_intern_str(mrb, mid);
1047
+ }
1048
+ else {
1049
+ tmp = mrb_check_string_type(mrb, mid);
1050
+ if (mrb_nil_p(tmp)) {
1051
+ tmp = mrb_inspect(mrb, mid);
1052
+ mrb_raisef(mrb, E_TYPE_ERROR, "%S is not a symbol", tmp);
1053
+ }
1054
+ tmp = mrb_check_intern_str(mrb, tmp);
1055
+ }
1056
+ if (mrb_nil_p(tmp)) {
1057
+ respond_to_p = FALSE;
1058
+ }
1059
+ else {
1060
+ id = mrb_symbol(tmp);
1061
+ }
1062
+ }
1063
+
1064
+ if (respond_to_p) {
1065
+ respond_to_p = basic_obj_respond_to(mrb, self, id, !priv);
1066
+ }
1067
+
1068
+ if (!respond_to_p) {
1069
+ rtm_id = mrb_intern_lit(mrb, "respond_to_missing?");
1070
+ if (basic_obj_respond_to(mrb, self, rtm_id, !priv)) {
1071
+ mrb_value args[2], v;
1072
+ args[0] = mid;
1073
+ args[1] = mrb_bool_value(priv);
1074
+ v = mrb_funcall_argv(mrb, self, rtm_id, 2, args);
1075
+ return mrb_bool_value(mrb_bool(v));
1076
+ }
1077
+ }
1078
+ return mrb_bool_value(respond_to_p);
1079
+ }
1080
+
1081
+ /* 15.3.1.3.45 */
1082
+ /*
1083
+ * call-seq:
1084
+ * obj.singleton_methods(all=true) -> array
1085
+ *
1086
+ * Returns an array of the names of singleton methods for <i>obj</i>.
1087
+ * If the optional <i>all</i> parameter is true, the list will include
1088
+ * methods in modules included in <i>obj</i>.
1089
+ * Only public and protected singleton methods are returned.
1090
+ *
1091
+ * module Other
1092
+ * def three() end
1093
+ * end
1094
+ *
1095
+ * class Single
1096
+ * def Single.four() end
1097
+ * end
1098
+ *
1099
+ * a = Single.new
1100
+ *
1101
+ * def a.one()
1102
+ * end
1103
+ *
1104
+ * class << a
1105
+ * include Other
1106
+ * def two()
1107
+ * end
1108
+ * end
1109
+ *
1110
+ * Single.singleton_methods #=> [:four]
1111
+ * a.singleton_methods(false) #=> [:two, :one]
1112
+ * a.singleton_methods #=> [:two, :one, :three]
1113
+ */
1114
+ static mrb_value
1115
+ mrb_obj_singleton_methods_m(mrb_state *mrb, mrb_value self)
1116
+ {
1117
+ mrb_bool recur = TRUE;
1118
+ mrb_get_args(mrb, "|b", &recur);
1119
+ return mrb_obj_singleton_methods(mrb, recur, self);
1120
+ }
1121
+
1122
+ static mrb_value
1123
+ mod_define_singleton_method(mrb_state *mrb, mrb_value self)
1124
+ {
1125
+ struct RProc *p;
1126
+ mrb_method_t m;
1127
+ mrb_sym mid;
1128
+ mrb_value blk = mrb_nil_value();
1129
+
1130
+ mrb_get_args(mrb, "n&", &mid, &blk);
1131
+ if (mrb_nil_p(blk)) {
1132
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "no block given");
1133
+ }
1134
+ p = (struct RProc*)mrb_obj_alloc(mrb, MRB_TT_PROC, mrb->proc_class);
1135
+ mrb_proc_copy(p, mrb_proc_ptr(blk));
1136
+ p->flags |= MRB_PROC_STRICT;
1137
+ MRB_METHOD_FROM_PROC(m, p);
1138
+ mrb_define_method_raw(mrb, mrb_class_ptr(mrb_singleton_class(mrb, self)), mid, m);
1139
+ return mrb_symbol_value(mid);
1140
+ }
1141
+
1142
+ static mrb_value
1143
+ mrb_obj_ceqq(mrb_state *mrb, mrb_value self)
1144
+ {
1145
+ mrb_value v;
1146
+ mrb_int i, len;
1147
+ mrb_sym eqq = mrb_intern_lit(mrb, "===");
1148
+ mrb_value ary = mrb_ary_splat(mrb, self);
1149
+
1150
+ mrb_get_args(mrb, "o", &v);
1151
+ len = RARRAY_LEN(ary);
1152
+ for (i=0; i<len; i++) {
1153
+ mrb_value c = mrb_funcall_argv(mrb, mrb_ary_entry(ary, i), eqq, 1, &v);
1154
+ if (mrb_test(c)) return mrb_true_value();
1155
+ }
1156
+ return mrb_false_value();
1157
+ }
1158
+
1159
+ /* 15.3.1.2.7 */
1160
+ /*
1161
+ * call-seq:
1162
+ * local_variables -> array
1163
+ *
1164
+ * Returns the names of local variables in the current scope.
1165
+ *
1166
+ * [mruby limitation]
1167
+ * If variable symbol information was stripped out from
1168
+ * compiled binary files using `mruby-strip -l`, this
1169
+ * method always returns an empty array.
1170
+ */
1171
+ static mrb_value
1172
+ mrb_local_variables(mrb_state *mrb, mrb_value self)
1173
+ {
1174
+ struct RProc *proc;
1175
+ mrb_irep *irep;
1176
+ mrb_value vars;
1177
+ size_t i;
1178
+
1179
+ proc = mrb->c->ci[-1].proc;
1180
+
1181
+ if (MRB_PROC_CFUNC_P(proc)) {
1182
+ return mrb_ary_new(mrb);
1183
+ }
1184
+ vars = mrb_hash_new(mrb);
1185
+ while (proc) {
1186
+ if (MRB_PROC_CFUNC_P(proc)) break;
1187
+ irep = proc->body.irep;
1188
+ if (!irep->lv) break;
1189
+ for (i = 0; i + 1 < irep->nlocals; ++i) {
1190
+ if (irep->lv[i].name) {
1191
+ mrb_hash_set(mrb, vars, mrb_symbol_value(irep->lv[i].name), mrb_true_value());
1192
+ }
1193
+ }
1194
+ if (!MRB_PROC_ENV_P(proc)) break;
1195
+ proc = proc->upper;
1196
+ //if (MRB_PROC_SCOPE_P(proc)) break;
1197
+ if (!proc->c) break;
1198
+ }
1199
+
1200
+ return mrb_hash_keys(mrb, vars);
1201
+ }
1202
+
1203
+ mrb_value mrb_obj_equal_m(mrb_state *mrb, mrb_value);
1204
+ void
1205
+ mrb_init_kernel(mrb_state *mrb)
1206
+ {
1207
+ struct RClass *krn;
1208
+
1209
+ mrb->kernel_module = krn = mrb_define_module(mrb, "Kernel"); /* 15.3.1 */
1210
+ mrb_define_class_method(mrb, krn, "block_given?", mrb_f_block_given_p_m, MRB_ARGS_NONE()); /* 15.3.1.2.2 */
1211
+ mrb_define_class_method(mrb, krn, "global_variables", mrb_f_global_variables, MRB_ARGS_NONE()); /* 15.3.1.2.4 */
1212
+ mrb_define_class_method(mrb, krn, "iterator?", mrb_f_block_given_p_m, MRB_ARGS_NONE()); /* 15.3.1.2.5 */
1213
+ mrb_define_class_method(mrb, krn, "local_variables", mrb_local_variables, MRB_ARGS_NONE()); /* 15.3.1.2.7 */
1214
+ ; /* 15.3.1.2.11 */
1215
+ mrb_define_class_method(mrb, krn, "raise", mrb_f_raise, MRB_ARGS_OPT(2)); /* 15.3.1.2.12 */
1216
+
1217
+ mrb_define_method(mrb, krn, "singleton_class", mrb_singleton_class, MRB_ARGS_NONE());
1218
+
1219
+ mrb_define_method(mrb, krn, "===", mrb_equal_m, MRB_ARGS_REQ(1)); /* 15.3.1.3.2 */
1220
+ mrb_define_method(mrb, krn, "block_given?", mrb_f_block_given_p_m, MRB_ARGS_NONE()); /* 15.3.1.3.6 */
1221
+ mrb_define_method(mrb, krn, "class", mrb_obj_class_m, MRB_ARGS_NONE()); /* 15.3.1.3.7 */
1222
+ mrb_define_method(mrb, krn, "clone", mrb_obj_clone, MRB_ARGS_NONE()); /* 15.3.1.3.8 */
1223
+ mrb_define_method(mrb, krn, "dup", mrb_obj_dup, MRB_ARGS_NONE()); /* 15.3.1.3.9 */
1224
+ mrb_define_method(mrb, krn, "eql?", mrb_obj_equal_m, MRB_ARGS_REQ(1)); /* 15.3.1.3.10 */
1225
+ mrb_define_method(mrb, krn, "equal?", mrb_obj_equal_m, MRB_ARGS_REQ(1)); /* 15.3.1.3.11 */
1226
+ mrb_define_method(mrb, krn, "extend", mrb_obj_extend_m, MRB_ARGS_ANY()); /* 15.3.1.3.13 */
1227
+ mrb_define_method(mrb, krn, "freeze", mrb_obj_freeze, MRB_ARGS_NONE());
1228
+ mrb_define_method(mrb, krn, "frozen?", mrb_obj_frozen, MRB_ARGS_NONE());
1229
+ mrb_define_method(mrb, krn, "global_variables", mrb_f_global_variables, MRB_ARGS_NONE()); /* 15.3.1.3.14 */
1230
+ mrb_define_method(mrb, krn, "hash", mrb_obj_hash, MRB_ARGS_NONE()); /* 15.3.1.3.15 */
1231
+ mrb_define_method(mrb, krn, "initialize_copy", mrb_obj_init_copy, MRB_ARGS_REQ(1)); /* 15.3.1.3.16 */
1232
+ mrb_define_method(mrb, krn, "inspect", mrb_obj_inspect, MRB_ARGS_NONE()); /* 15.3.1.3.17 */
1233
+ mrb_define_method(mrb, krn, "instance_of?", obj_is_instance_of, MRB_ARGS_REQ(1)); /* 15.3.1.3.19 */
1234
+ mrb_define_method(mrb, krn, "instance_variable_defined?", mrb_obj_ivar_defined, MRB_ARGS_REQ(1)); /* 15.3.1.3.20 */
1235
+ mrb_define_method(mrb, krn, "instance_variable_get", mrb_obj_ivar_get, MRB_ARGS_REQ(1)); /* 15.3.1.3.21 */
1236
+ mrb_define_method(mrb, krn, "instance_variable_set", mrb_obj_ivar_set, MRB_ARGS_REQ(2)); /* 15.3.1.3.22 */
1237
+ mrb_define_method(mrb, krn, "instance_variables", mrb_obj_instance_variables, MRB_ARGS_NONE()); /* 15.3.1.3.23 */
1238
+ mrb_define_method(mrb, krn, "is_a?", mrb_obj_is_kind_of_m, MRB_ARGS_REQ(1)); /* 15.3.1.3.24 */
1239
+ mrb_define_method(mrb, krn, "iterator?", mrb_f_block_given_p_m, MRB_ARGS_NONE()); /* 15.3.1.3.25 */
1240
+ mrb_define_method(mrb, krn, "kind_of?", mrb_obj_is_kind_of_m, MRB_ARGS_REQ(1)); /* 15.3.1.3.26 */
1241
+ mrb_define_method(mrb, krn, "local_variables", mrb_local_variables, MRB_ARGS_NONE()); /* 15.3.1.3.28 */
1242
+ #ifdef MRB_DEFAULT_METHOD_MISSING
1243
+ mrb_define_method(mrb, krn, "method_missing", mrb_obj_missing, MRB_ARGS_ANY()); /* 15.3.1.3.30 */
1244
+ #endif
1245
+ mrb_define_method(mrb, krn, "methods", mrb_obj_methods_m, MRB_ARGS_OPT(1)); /* 15.3.1.3.31 */
1246
+ mrb_define_method(mrb, krn, "nil?", mrb_false, MRB_ARGS_NONE()); /* 15.3.1.3.32 */
1247
+ mrb_define_method(mrb, krn, "object_id", mrb_obj_id_m, MRB_ARGS_NONE()); /* 15.3.1.3.33 */
1248
+ mrb_define_method(mrb, krn, "private_methods", mrb_obj_private_methods, MRB_ARGS_OPT(1)); /* 15.3.1.3.36 */
1249
+ mrb_define_method(mrb, krn, "protected_methods", mrb_obj_protected_methods, MRB_ARGS_OPT(1)); /* 15.3.1.3.37 */
1250
+ mrb_define_method(mrb, krn, "public_methods", mrb_obj_public_methods, MRB_ARGS_OPT(1)); /* 15.3.1.3.38 */
1251
+ mrb_define_method(mrb, krn, "raise", mrb_f_raise, MRB_ARGS_ANY()); /* 15.3.1.3.40 */
1252
+ mrb_define_method(mrb, krn, "remove_instance_variable", mrb_obj_remove_instance_variable,MRB_ARGS_REQ(1)); /* 15.3.1.3.41 */
1253
+ mrb_define_method(mrb, krn, "respond_to?", obj_respond_to, MRB_ARGS_ANY()); /* 15.3.1.3.43 */
1254
+ mrb_define_method(mrb, krn, "send", mrb_f_send, MRB_ARGS_ANY()); /* 15.3.1.3.44 */
1255
+ mrb_define_method(mrb, krn, "singleton_methods", mrb_obj_singleton_methods_m, MRB_ARGS_OPT(1)); /* 15.3.1.3.45 */
1256
+ mrb_define_method(mrb, krn, "define_singleton_method", mod_define_singleton_method, MRB_ARGS_ANY());
1257
+ mrb_define_method(mrb, krn, "to_s", mrb_any_to_s, MRB_ARGS_NONE()); /* 15.3.1.3.46 */
1258
+ mrb_define_method(mrb, krn, "__case_eqq", mrb_obj_ceqq, MRB_ARGS_REQ(1)); /* internal */
1259
+
1260
+ mrb_define_method(mrb, krn, "class_defined?", mrb_krn_class_defined, MRB_ARGS_REQ(1));
1261
+
1262
+ mrb_include_module(mrb, mrb->object_class, mrb->kernel_module);
1263
+ mrb_alias_method(mrb, mrb->module_class, mrb_intern_lit(mrb, "dup"), mrb_intern_lit(mrb, "clone"));
1264
+ }