webruby 0.2.2 → 0.2.4
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.
- checksums.yaml +4 -4
- data/lib/webruby/config.rb +4 -9
- data/lib/webruby/rake/files.rake +2 -2
- data/modules/emscripten/AUTHORS +9 -1
- data/modules/emscripten/CONTRIBUTING.markdown +5 -0
- data/modules/emscripten/ChangeLog +435 -0
- data/modules/emscripten/cmake/Modules/FindOpenAL.cmake +26 -0
- data/modules/emscripten/cmake/Platform/Emscripten.cmake +9 -2
- data/modules/emscripten/em++ +0 -2
- data/modules/emscripten/emcc +92 -32
- data/modules/emscripten/emlink.py +16 -13
- data/modules/emscripten/emmake +1 -1
- data/modules/emscripten/emrun +918 -0
- data/modules/emscripten/emrun.bat +2 -0
- data/modules/emscripten/emscripten.py +545 -20
- data/modules/emscripten/src/analyzer.js +6 -1
- data/modules/emscripten/src/compiler.js +25 -16
- data/modules/emscripten/src/emrun_postjs.js +20 -0
- data/modules/emscripten/{tests → src}/hello_world.js +0 -0
- data/modules/emscripten/src/intertyper.js +45 -16
- data/modules/emscripten/src/jsifier.js +78 -48
- data/modules/emscripten/src/library.js +381 -96
- data/modules/emscripten/src/library_browser.js +50 -53
- data/modules/emscripten/src/library_egl.js +66 -24
- data/modules/emscripten/src/library_fs.js +122 -90
- data/modules/emscripten/src/library_gl.js +739 -353
- data/modules/emscripten/src/library_glfw.js +9 -3
- data/modules/emscripten/src/library_glut.js +10 -5
- data/modules/emscripten/src/library_idbfs.js +14 -14
- data/modules/emscripten/src/library_memfs.js +65 -41
- data/modules/emscripten/src/library_nodefs.js +61 -9
- data/modules/emscripten/src/library_openal.js +4 -4
- data/modules/emscripten/src/library_path.js +9 -13
- data/modules/emscripten/src/library_sdl.js +301 -64
- data/modules/emscripten/src/library_sockfs.js +7 -5
- data/modules/emscripten/src/modules.js +62 -22
- data/modules/emscripten/src/parseTools.js +135 -102
- data/modules/emscripten/src/postamble.js +3 -4
- data/modules/emscripten/src/preamble.js +49 -29
- data/modules/emscripten/src/proxyClient.js +1 -1
- data/modules/emscripten/src/proxyWorker.js +10 -10
- data/modules/emscripten/src/relooper/Relooper.cpp +15 -4
- data/modules/emscripten/src/runtime.js +32 -8
- data/modules/emscripten/src/settings.js +25 -8
- data/modules/emscripten/src/shell.html +6 -3
- data/modules/emscripten/src/shell.js +13 -11
- data/modules/emscripten/src/simd.js +602 -432
- data/modules/emscripten/src/struct_info.json +22 -2
- data/modules/emscripten/src/utility.js +32 -17
- data/modules/emscripten/system/include/SDL/SDL_events.h +1 -0
- data/modules/emscripten/system/include/compat/ctype.h +17 -0
- data/modules/emscripten/system/include/compat/wchar.h +23 -0
- data/modules/emscripten/system/include/compat/wctype.h +23 -0
- data/modules/emscripten/system/include/emscripten/emmintrin.h +87 -0
- data/modules/emscripten/system/include/emscripten/emscripten.h +30 -4
- data/modules/emscripten/system/include/emscripten/vector.h +29 -1
- data/modules/emscripten/system/include/emscripten/xmmintrin.h +131 -0
- data/modules/emscripten/system/include/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/include/libcxx/__bit_reference +8 -8
- data/modules/emscripten/system/include/libcxx/__config +95 -17
- data/modules/emscripten/system/include/libcxx/__debug +25 -4
- data/modules/emscripten/system/include/libcxx/__functional_03 +7 -7
- data/modules/emscripten/system/include/libcxx/__functional_base +169 -9
- data/modules/emscripten/system/include/libcxx/__functional_base_03 +1 -1
- data/modules/emscripten/system/include/libcxx/__hash_table +25 -25
- data/modules/emscripten/system/include/libcxx/__locale +21 -19
- data/modules/emscripten/system/include/libcxx/__mutex_base +2 -33
- data/modules/emscripten/system/include/libcxx/__split_buffer +9 -9
- data/modules/emscripten/system/include/libcxx/__std_stream +14 -0
- data/modules/emscripten/system/include/libcxx/__tree +35 -26
- data/modules/emscripten/system/include/libcxx/__tuple +15 -15
- data/modules/emscripten/system/include/libcxx/__tuple_03 +2 -2
- data/modules/emscripten/system/include/libcxx/__undef_min_max +8 -0
- data/modules/emscripten/system/include/libcxx/algorithm +121 -110
- data/modules/emscripten/system/include/libcxx/array +15 -15
- data/modules/emscripten/system/include/libcxx/bitset +4 -4
- data/modules/emscripten/system/include/libcxx/chrono +51 -17
- data/modules/emscripten/system/include/libcxx/cmath +25 -23
- data/modules/emscripten/system/include/libcxx/codecvt +21 -18
- data/modules/emscripten/system/include/libcxx/complex +48 -7
- data/modules/emscripten/system/include/libcxx/cstddef +1 -1
- data/modules/emscripten/system/include/libcxx/cstdio +8 -1
- data/modules/emscripten/system/include/libcxx/cstdlib +1 -1
- data/modules/emscripten/system/include/libcxx/cwchar +1 -1
- data/modules/emscripten/system/include/libcxx/deque +26 -12
- data/modules/emscripten/system/include/libcxx/dynarray +311 -0
- data/modules/emscripten/system/include/libcxx/exception +4 -4
- data/modules/emscripten/system/include/libcxx/ext/__hash +3 -3
- data/modules/emscripten/system/include/libcxx/ext/hash_map +19 -15
- data/modules/emscripten/system/include/libcxx/ext/hash_set +7 -3
- data/modules/emscripten/system/include/libcxx/forward_list +33 -7
- data/modules/emscripten/system/include/libcxx/fstream +4 -4
- data/modules/emscripten/system/include/libcxx/functional +200 -170
- data/modules/emscripten/system/include/libcxx/future +83 -39
- data/modules/emscripten/system/include/libcxx/initializer_list +24 -11
- data/modules/emscripten/system/include/libcxx/iomanip +147 -0
- data/modules/emscripten/system/include/libcxx/ios +24 -16
- data/modules/emscripten/system/include/libcxx/iosfwd +19 -19
- data/modules/emscripten/system/include/libcxx/istream +13 -8
- data/modules/emscripten/system/include/libcxx/iterator +108 -417
- data/modules/emscripten/system/include/libcxx/limits +8 -4
- data/modules/emscripten/system/include/libcxx/list +28 -8
- data/modules/emscripten/system/include/libcxx/locale +153 -390
- data/modules/emscripten/system/include/libcxx/map +280 -100
- data/modules/emscripten/system/include/libcxx/memory +49 -97
- data/modules/emscripten/system/include/libcxx/mutex +2 -2
- data/modules/emscripten/system/include/libcxx/new +43 -14
- data/modules/emscripten/system/include/libcxx/numeric +2 -2
- data/modules/emscripten/system/include/libcxx/optional +697 -0
- data/modules/emscripten/system/include/libcxx/ostream +17 -8
- data/modules/emscripten/system/include/libcxx/queue +5 -5
- data/modules/emscripten/system/include/libcxx/random +53 -51
- data/modules/emscripten/system/include/libcxx/ratio +11 -11
- data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/include/libcxx/regex +23 -20
- data/modules/emscripten/system/include/libcxx/scoped_allocator +1 -1
- data/modules/emscripten/system/include/libcxx/set +166 -2
- data/modules/emscripten/system/include/libcxx/shared_mutex +419 -0
- data/modules/emscripten/system/include/libcxx/sstream +4 -4
- data/modules/emscripten/system/include/libcxx/stack +3 -3
- data/modules/emscripten/system/include/libcxx/streambuf +5 -5
- data/modules/emscripten/system/include/libcxx/string +372 -324
- data/modules/emscripten/system/include/libcxx/support/ibm/limits.h +99 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/support.h +54 -0
- data/modules/emscripten/system/include/libcxx/support/ibm/xlocale.h +326 -0
- data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +6 -6
- data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -15
- data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +2 -0
- data/modules/emscripten/system/include/libcxx/support/win32/support.h +6 -1
- data/modules/emscripten/system/include/libcxx/system_error +14 -8
- data/modules/emscripten/system/include/libcxx/thread +7 -8
- data/modules/emscripten/system/include/libcxx/tuple +29 -88
- data/modules/emscripten/system/include/libcxx/type_traits +253 -209
- data/modules/emscripten/system/include/libcxx/typeindex +3 -3
- data/modules/emscripten/system/include/libcxx/unordered_map +162 -101
- data/modules/emscripten/system/include/libcxx/unordered_set +79 -2
- data/modules/emscripten/system/include/libcxx/utility +20 -20
- data/modules/emscripten/system/include/libcxx/valarray +23 -23
- data/modules/emscripten/system/include/libcxx/vector +114 -91
- data/modules/emscripten/system/lib/libc/musl/src/regex/regcomp.c +3352 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regerror.c +35 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/regexec.c +1011 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre-mem.c +158 -0
- data/modules/emscripten/system/lib/libc/musl/src/regex/tre.h +231 -0
- data/modules/emscripten/system/lib/libcextra.symbols +7 -0
- data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +9 -1
- data/modules/emscripten/system/lib/libcxx/algorithm.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/debug.cpp +66 -42
- data/modules/emscripten/system/lib/libcxx/exception.cpp +88 -16
- data/modules/emscripten/system/lib/libcxx/future.cpp +6 -0
- data/modules/emscripten/system/lib/libcxx/ios.cpp +7 -2
- data/modules/emscripten/system/lib/libcxx/iostream.cpp +8 -8
- data/modules/emscripten/system/lib/libcxx/locale.cpp +38 -11
- data/modules/emscripten/system/lib/libcxx/mutex.cpp +3 -0
- data/modules/emscripten/system/lib/libcxx/new.cpp +44 -10
- data/modules/emscripten/system/lib/libcxx/optional.cpp +25 -0
- data/modules/emscripten/system/lib/libcxx/random.cpp +26 -0
- data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
- data/modules/emscripten/system/lib/libcxx/shared_mutex.cpp +101 -0
- data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +11 -7
- data/modules/emscripten/system/lib/libcxx/string.cpp +3 -1
- data/modules/emscripten/system/lib/libcxx/strstream.cpp +7 -7
- data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +12 -13
- data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +33 -36
- data/modules/emscripten/system/lib/libcxx/symbols +187 -168
- data/modules/emscripten/system/lib/libcxx/system_error.cpp +1 -0
- data/modules/emscripten/system/lib/libcxx/thread.cpp +7 -3
- data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +9 -6
- data/modules/emscripten/system/lib/libcxx/valarray.cpp +2 -0
- data/modules/emscripten/third_party/lzma.js/doit.bat +4 -0
- data/modules/emscripten/third_party/lzma.js/doit.sh +9 -2
- data/modules/emscripten/tools/cache.py +5 -7
- data/modules/emscripten/tools/cache.pyc +0 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +7 -0
- data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +9 -1
- data/modules/emscripten/tools/eliminator/eliminator-test-output.js +3 -0
- data/modules/emscripten/tools/eliminator/eliminator-test.js +9 -1
- data/modules/emscripten/tools/file_packager.py +93 -50
- data/modules/emscripten/tools/js-optimizer.js +98 -48
- data/modules/emscripten/tools/js_optimizer.py +4 -4
- data/modules/emscripten/tools/js_optimizer.pyc +0 -0
- data/modules/emscripten/tools/jsrun.py +1 -1
- data/modules/emscripten/tools/jsrun.pyc +0 -0
- data/modules/emscripten/tools/response_file.py +6 -0
- data/modules/emscripten/tools/response_file.pyc +0 -0
- data/modules/emscripten/tools/settings_template_readonly.py +2 -0
- data/modules/emscripten/tools/shared.py +88 -34
- data/modules/emscripten/tools/shared.pyc +0 -0
- data/modules/emscripten/tools/split.py +21 -13
- data/modules/mruby/build_config.rb +7 -1
- data/modules/mruby/doc/compile/README.md +5 -9
- data/modules/mruby/include/mrbconf.h +5 -2
- data/modules/mruby/include/mruby/array.h +1 -0
- data/modules/mruby/include/mruby/compile.h +2 -4
- data/modules/mruby/include/mruby/dump.h +7 -16
- data/modules/mruby/include/mruby/hash.h +1 -1
- data/modules/mruby/include/mruby/irep.h +14 -2
- data/modules/mruby/include/mruby/khash.h +8 -7
- data/modules/mruby/include/mruby/string.h +1 -0
- data/modules/mruby/include/mruby/value.h +5 -2
- data/modules/mruby/include/mruby.h +12 -13
- data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +16 -6
- data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +18 -30
- data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +21 -0
- data/modules/mruby/mrbgems/mruby-math/src/math.c +1 -1
- data/modules/mruby/mrbgems/mruby-random/src/random.c +144 -47
- data/modules/mruby/mrbgems/mruby-random/test/random.rb +44 -0
- data/modules/mruby/mrbgems/mruby-struct/src/struct.c +5 -5
- data/modules/mruby/mrblib/numeric.rb +99 -33
- data/modules/mruby/src/array.c +11 -4
- data/modules/mruby/src/backtrace.c +2 -2
- data/modules/mruby/src/class.c +49 -30
- data/modules/mruby/src/codegen.c +131 -79
- data/modules/mruby/src/debug.c +1 -1
- data/modules/mruby/src/dump.c +213 -163
- data/modules/mruby/src/error.c +17 -17
- data/modules/mruby/src/error.h +1 -1
- data/modules/mruby/src/etc.c +10 -0
- data/modules/mruby/src/gc.c +35 -17
- data/modules/mruby/src/hash.c +5 -5
- data/modules/mruby/src/kernel.c +36 -14
- data/modules/mruby/src/load.c +238 -296
- data/modules/mruby/src/numeric.c +18 -98
- data/modules/mruby/src/object.c +3 -5
- data/modules/mruby/src/parse.y +63 -56
- data/modules/mruby/src/proc.c +8 -5
- data/modules/mruby/src/re.h +0 -1
- data/modules/mruby/src/state.c +65 -27
- data/modules/mruby/src/string.c +3 -31
- data/modules/mruby/src/symbol.c +3 -3
- data/modules/mruby/src/variable.c +12 -5
- data/modules/mruby/src/vm.c +90 -72
- data/modules/mruby/tasks/mruby_build.rake +10 -1
- data/modules/mruby/tasks/toolchains/gcc.rake +12 -2
- data/modules/mruby/tasks/toolchains/{vs2012.rake → visualcpp.rake} +1 -1
- data/modules/mruby/test/driver.c +3 -3
- data/modules/mruby/test/t/array.rb +5 -5
- data/modules/mruby/test/t/class.rb +14 -1
- data/modules/mruby/test/t/kernel.rb +4 -0
- data/modules/mruby/test/t/module.rb +4 -4
- data/modules/mruby/test/t/nameerror.rb +1 -1
- data/modules/mruby/tools/mrbc/mrbc.c +23 -17
- data/modules/mruby/travis_config.rb +10 -1
- metadata +28 -5
- data/modules/mruby/tasks/toolchains/vs2010.rake +0 -3
data/modules/mruby/src/class.c
CHANGED
@@ -53,7 +53,7 @@ void
|
|
53
53
|
mrb_name_class(mrb_state *mrb, struct RClass *c, mrb_sym name)
|
54
54
|
{
|
55
55
|
mrb_obj_iv_set(mrb, (struct RObject*)c,
|
56
|
-
|
56
|
+
mrb_intern_lit(mrb, "__classid__"), mrb_symbol_value(name));
|
57
57
|
}
|
58
58
|
|
59
59
|
#define make_metaclass(mrb, c) prepare_singleton_class((mrb), (struct RBasic*)(c))
|
@@ -89,7 +89,7 @@ prepare_singleton_class(mrb_state *mrb, struct RBasic *o)
|
|
89
89
|
o->c = sc;
|
90
90
|
mrb_field_write_barrier(mrb, (struct RBasic*)o, (struct RBasic*)sc);
|
91
91
|
mrb_field_write_barrier(mrb, (struct RBasic*)sc, (struct RBasic*)o);
|
92
|
-
mrb_obj_iv_set(mrb, (struct RObject*)sc,
|
92
|
+
mrb_obj_iv_set(mrb, (struct RObject*)sc, mrb_intern_lit(mrb, "__attached__"), mrb_obj_value(o));
|
93
93
|
}
|
94
94
|
|
95
95
|
struct RClass*
|
@@ -116,7 +116,7 @@ setup_class(mrb_state *mrb, mrb_value outer, struct RClass *c, mrb_sym id)
|
|
116
116
|
mrb_name_class(mrb, c, id);
|
117
117
|
mrb_const_set(mrb, outer, id, mrb_obj_value(c));
|
118
118
|
mrb_obj_iv_set(mrb, (struct RObject*)c,
|
119
|
-
|
119
|
+
mrb_intern_lit(mrb, "__outer__"), outer);
|
120
120
|
}
|
121
121
|
|
122
122
|
struct RClass*
|
@@ -124,7 +124,7 @@ mrb_class_outer_module(mrb_state *mrb, struct RClass *c)
|
|
124
124
|
{
|
125
125
|
mrb_value outer;
|
126
126
|
|
127
|
-
outer = mrb_obj_iv_get(mrb, (struct RObject*)c,
|
127
|
+
outer = mrb_obj_iv_get(mrb, (struct RObject*)c, mrb_intern_lit(mrb, "__outer__"));
|
128
128
|
if (mrb_nil_p(outer)) return 0;
|
129
129
|
return mrb_class_ptr(outer);
|
130
130
|
}
|
@@ -380,6 +380,7 @@ to_hash(mrb_state *mrb, mrb_value val)
|
|
380
380
|
string mruby type C type note
|
381
381
|
----------------------------------------------------------------------------------------------
|
382
382
|
o: Object [mrb_value]
|
383
|
+
C: class/module [mrb_value]
|
383
384
|
S: String [mrb_value]
|
384
385
|
A: Array [mrb_value]
|
385
386
|
H: Hash [mrb_value]
|
@@ -434,6 +435,29 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
|
|
434
435
|
}
|
435
436
|
}
|
436
437
|
break;
|
438
|
+
case 'C':
|
439
|
+
{
|
440
|
+
mrb_value *p;
|
441
|
+
|
442
|
+
p = va_arg(ap, mrb_value*);
|
443
|
+
if (i < argc) {
|
444
|
+
mrb_value ss;
|
445
|
+
|
446
|
+
ss = *sp++;
|
447
|
+
switch (mrb_type(ss)) {
|
448
|
+
case MRB_TT_CLASS:
|
449
|
+
case MRB_TT_MODULE:
|
450
|
+
case MRB_TT_SCLASS:
|
451
|
+
break;
|
452
|
+
default:
|
453
|
+
mrb_raisef(mrb, E_TYPE_ERROR, "%S is not class/module", ss);
|
454
|
+
break;
|
455
|
+
}
|
456
|
+
*p = ss;
|
457
|
+
i++;
|
458
|
+
}
|
459
|
+
}
|
460
|
+
break;
|
437
461
|
case 'S':
|
438
462
|
{
|
439
463
|
mrb_value *p;
|
@@ -576,16 +600,8 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
|
|
576
600
|
*p = (mrb_int)f;
|
577
601
|
}
|
578
602
|
break;
|
579
|
-
case MRB_TT_FALSE:
|
580
|
-
*p = 0;
|
581
|
-
break;
|
582
603
|
default:
|
583
|
-
|
584
|
-
mrb_value tmp;
|
585
|
-
|
586
|
-
tmp = mrb_convert_type(mrb, *sp, MRB_TT_FIXNUM, "Integer", "to_int");
|
587
|
-
*p = mrb_fixnum(tmp);
|
588
|
-
}
|
604
|
+
*p = mrb_fixnum(mrb_Integer(mrb, *sp));
|
589
605
|
break;
|
590
606
|
}
|
591
607
|
sp++;
|
@@ -740,7 +756,7 @@ mrb_mod_append_features(mrb_state *mrb, mrb_value mod)
|
|
740
756
|
mrb_value klass;
|
741
757
|
|
742
758
|
mrb_check_type(mrb, mod, MRB_TT_MODULE);
|
743
|
-
mrb_get_args(mrb, "
|
759
|
+
mrb_get_args(mrb, "C", &klass);
|
744
760
|
mrb_include_module(mrb, mrb_class_ptr(klass), mrb_class_ptr(mod));
|
745
761
|
return mod;
|
746
762
|
}
|
@@ -788,7 +804,7 @@ mrb_mod_include_p(mrb_state *mrb, mrb_value mod)
|
|
788
804
|
mrb_value mod2;
|
789
805
|
struct RClass *c = mrb_class_ptr(mod);
|
790
806
|
|
791
|
-
mrb_get_args(mrb, "
|
807
|
+
mrb_get_args(mrb, "C", &mod2);
|
792
808
|
mrb_check_type(mrb, mod2, MRB_TT_MODULE);
|
793
809
|
|
794
810
|
while (c) {
|
@@ -1045,7 +1061,7 @@ mrb_instance_new(mrb_state *mrb, mrb_value cv)
|
|
1045
1061
|
|
1046
1062
|
obj = mrb_instance_alloc(mrb, cv);
|
1047
1063
|
mrb_get_args(mrb, "*&", &argv, &argc, &blk);
|
1048
|
-
mrb_funcall_with_block(mrb, obj,
|
1064
|
+
mrb_funcall_with_block(mrb, obj, mrb_intern_lit(mrb, "initialize"), argc, argv, blk);
|
1049
1065
|
|
1050
1066
|
return obj;
|
1051
1067
|
}
|
@@ -1056,7 +1072,7 @@ mrb_obj_new(mrb_state *mrb, struct RClass *c, int argc, mrb_value *argv)
|
|
1056
1072
|
mrb_value obj;
|
1057
1073
|
|
1058
1074
|
obj = mrb_instance_alloc(mrb, mrb_obj_value(c));
|
1059
|
-
mrb_funcall_argv(mrb, obj,
|
1075
|
+
mrb_funcall_argv(mrb, obj, mrb_intern_lit(mrb, "initialize"), argc, argv);
|
1060
1076
|
|
1061
1077
|
return obj;
|
1062
1078
|
}
|
@@ -1064,15 +1080,18 @@ mrb_obj_new(mrb_state *mrb, struct RClass *c, int argc, mrb_value *argv)
|
|
1064
1080
|
static mrb_value
|
1065
1081
|
mrb_class_new_class(mrb_state *mrb, mrb_value cv)
|
1066
1082
|
{
|
1067
|
-
mrb_value super;
|
1068
|
-
|
1083
|
+
mrb_value super, blk;
|
1084
|
+
mrb_value new_class;
|
1069
1085
|
|
1070
|
-
if (mrb_get_args(mrb, "|
|
1086
|
+
if (mrb_get_args(mrb, "|C&", &super, &blk) == 0) {
|
1071
1087
|
super = mrb_obj_value(mrb->object_class);
|
1072
1088
|
}
|
1073
|
-
new_class = mrb_class_new(mrb, mrb_class_ptr(super));
|
1074
|
-
|
1075
|
-
|
1089
|
+
new_class = mrb_obj_value(mrb_class_new(mrb, mrb_class_ptr(super)));
|
1090
|
+
if (!mrb_nil_p(blk)) {
|
1091
|
+
mrb_funcall_with_block(mrb, new_class, mrb_intern_cstr(mrb, "class_eval"), 0, NULL, blk);
|
1092
|
+
}
|
1093
|
+
mrb_funcall(mrb, super, "inherited", 1, new_class);
|
1094
|
+
return new_class;
|
1076
1095
|
}
|
1077
1096
|
|
1078
1097
|
mrb_value
|
@@ -1144,7 +1163,7 @@ mrb_bob_missing(mrb_state *mrb, mrb_value mod)
|
|
1144
1163
|
|
1145
1164
|
mrb_get_args(mrb, "n*", &name, &a, &alen);
|
1146
1165
|
|
1147
|
-
if (mrb_respond_to(mrb,mod,
|
1166
|
+
if (mrb_respond_to(mrb,mod,mrb_intern_lit(mrb, "inspect"))){
|
1148
1167
|
inspect = mrb_funcall(mrb, mod, "inspect", 0);
|
1149
1168
|
if (RSTRING_LEN(inspect) > 64) {
|
1150
1169
|
inspect = mrb_any_to_s(mrb, mod);
|
@@ -1196,7 +1215,7 @@ mrb_class_path(mrb_state *mrb, struct RClass *c)
|
|
1196
1215
|
mrb_value path;
|
1197
1216
|
const char *name;
|
1198
1217
|
size_t len;
|
1199
|
-
mrb_sym classpath =
|
1218
|
+
mrb_sym classpath = mrb_intern_lit(mrb, "__classpath__");
|
1200
1219
|
|
1201
1220
|
path = mrb_obj_iv_get(mrb, (struct RObject*)c, classpath);
|
1202
1221
|
if (mrb_nil_p(path)) {
|
@@ -1357,7 +1376,7 @@ mrb_mod_to_s(mrb_state *mrb, mrb_value klass)
|
|
1357
1376
|
mrb_value str;
|
1358
1377
|
|
1359
1378
|
if (mrb_type(klass) == MRB_TT_SCLASS) {
|
1360
|
-
mrb_value v = mrb_iv_get(mrb, klass,
|
1379
|
+
mrb_value v = mrb_iv_get(mrb, klass, mrb_intern_lit(mrb, "__attached__"));
|
1361
1380
|
|
1362
1381
|
str = mrb_str_new(mrb, "#<Class:", 8);
|
1363
1382
|
|
@@ -1893,10 +1912,10 @@ mrb_init_class(mrb_state *mrb)
|
|
1893
1912
|
mrb_define_const(mrb, obj, "Class", mrb_obj_value(cls));
|
1894
1913
|
|
1895
1914
|
/* name each classes */
|
1896
|
-
mrb_name_class(mrb, bob,
|
1897
|
-
mrb_name_class(mrb, obj,
|
1898
|
-
mrb_name_class(mrb, mod,
|
1899
|
-
mrb_name_class(mrb, cls,
|
1915
|
+
mrb_name_class(mrb, bob, mrb_intern_lit(mrb, "BasicObject"));
|
1916
|
+
mrb_name_class(mrb, obj, mrb_intern_lit(mrb, "Object"));
|
1917
|
+
mrb_name_class(mrb, mod, mrb_intern_lit(mrb, "Module"));
|
1918
|
+
mrb_name_class(mrb, cls, mrb_intern_lit(mrb, "Class"));
|
1900
1919
|
|
1901
1920
|
MRB_SET_INSTANCE_TT(cls, MRB_TT_CLASS);
|
1902
1921
|
mrb_define_method(mrb, bob, "initialize", mrb_bob_init, MRB_ARGS_NONE());
|