void Init_kernel() { if (!cObject) cObject = define_class(intern("Object"), Qnil); if (!cKernel) cKernel = define_class(intern("Kernel"), cObject); define_global_function(intern("!"), kernel_not, 1); define_global_function(intern("puts"), kernel_puts_thunk, -1); define_global_function(intern("write"), kernel_write, 1); define_global_function(intern("print"), kernel_write, 1); define_global_function(intern("exit"), kernel_exit, -1); define_global_function(intern("sleep"), kernel_sleep, 1); define_global_function(intern("self"), kernel_s_self, 0); }
void define_module(RefNode *m, const FoxStatic *a_fs, FoxGlobal *a_fg) { fs = a_fs; fg = a_fg; mod_macos = m; define_func(m); define_class(m); }
void define_module(RefNode *m, const FoxStatic *a_fs, FoxGlobal *a_fg) { fs = a_fs; fg = a_fg; mod_sqlite = m; define_const(m); define_class(m); }
void Proc::initialize() { context->proc_class = define_class("Proc", context->object_class); singleton_method<Arg::Block, &rb_new>(context->proc_class, "new"); method<Self<Proc>, Arg::Block, Arg::Count, Arg::Values, &call>(context->proc_class, "call"); method<Self<Proc>, Arg::Block, Arg::Count, Arg::Values, &call>(context->proc_class, "[]"); }
void define_module(RefNode *m, const FoxStatic *a_fs, FoxGlobal *a_fg) { fs = a_fs; fg = a_fg; mod_textedit = m; mod_gui = fs->get_module_by_name("foxtk", -1, TRUE, FALSE); ftk = mod_gui->u.m.ext; define_class(m); }
void Init_gc() { cGC = define_class(intern("GC"), cObject); define_singleton_method(cGC, intern("run"), gc_s_run, 0); gc_never_free(get_variable(intern("ARGV"))); gc_never_free(get_variable(intern("stdin"))); gc_never_free(get_variable(intern("stdout"))); gc_never_free(get_variable(intern("stderr"))); }
void Dir::initialize() { context->dir_class = define_class("Dir", context->object_class); singleton_method<String, &mkdir>(context->dir_class, "mkdir"); singleton_method<String, &rb_delete>(context->dir_class, "delete"); singleton_method<String, Arg::Block, &chdir>(context->dir_class, "chdir"); singleton_method<String, &entries>(context->dir_class, "entries"); singleton_method<String, &rb_glob>(context->dir_class, "glob"); singleton_method<String, &rb_glob>(context->dir_class, "[]"); singleton_method<&pwd>(context->dir_class, "pwd"); }
void IO::initialize() { context->io_class = define_class("IO", context->object_class); singleton_method<String, &rb_readlines>(context->io_class, "readlines"); method<Self<IO>, &rb_close>(context->io_class, "close"); method<Self<IO>, Optional<Arg::Fixnum>, &rb_read>(context->io_class, "read"); method<Self<IO>, Arg::Block, &rb_each_line>(context->io_class, "each_line"); method<Self<IO>, Arg::Count, Arg::Values, &rb_print>(context->io_class, "print"); method<Self<IO>, Arg::Count, Arg::Values, &rb_puts>(context->io_class, "puts"); method<Self<IO>, &rb_gets>(context->io_class, "gets"); }
void Init_exception() { cException = define_class(intern("Exception"), cObject); Qretry = NEW_OBJ(struct goon); OBJ_SETUP(Qretry, T_RETRY); BASIC(Qretry).klass = cException; gc_never_free(Qretry); define_global_function(intern("fail"), throw_exc, -1); define_global_function(intern("throw"), throw_exc, -1); define_global_function(intern("retry"), exception_retry, 0); }
void Init_float() { cFloat = define_class(intern("Float"), cNumeric); define_singleton_method(cFloat, intern("new"), (void*)float_s_new, 1); define_method(cFloat, intern("*"), float_multiply, 1); define_method(cFloat, intern("+"), float_addition, 1); define_method(cFloat, intern("-"), float_subtract, 1); define_method(cFloat, intern("/"), float_divide, 1); define_method(cFloat, intern("**"), float_pow, 1); define_method(cFloat, intern("to_f"), float_to_f, 0); define_method(cFloat, intern("to_i"), float_to_i, 0); define_method(cFloat, intern("to_s"), float_to_s, 0); }
void Init_thread() { if (!thr_stk) thr_stk = vector_new(); if (!cur_thr) cur_thr = thread_new(); cThread = define_class(intern("Thread"), cObject); OBJ_SETUP(cur_thr, T_THREAD); BASIC(cur_thr).klass = cThread; define_method(cThread, intern("call"), eval_thread, 1); define_singleton_method(cThread, intern("main"), main_thread, 0); define_singleton_method(cThread, intern("current"), thread_s_current, 0); define_singleton_method(cThread, intern("critical"), thread_get_critical, 0); define_singleton_method(cThread, intern("setcritical"), thread_set_critical, 1); }
void Hash::initialize() { context->hash_class = define_class("Hash", context->object_class); internal_allocator<Hash, &Context::hash_class>(); method<Self<Hash>, Optional<Value>, Arg::Block, &rb_initialize>(context->hash_class, "initialize"); method<Self<Hash>, &rb_empty>(context->hash_class, "empty?"); method<Self<Hash>, Value, Arg::Block, &rb_delete>(context->hash_class, "delete"); method<Self<Hash>, &keys>(context->hash_class, "keys"); method<Self<Hash>, &values>(context->hash_class, "values"); method<Self<Hash>, Arg::Block, &each>(context->hash_class, "each"); method<Self<Hash>, &to_s>(context->hash_class, "to_s"); method<Self<Hash>, Value, &get>(context->hash_class, "[]"); method<Self<Hash>, Value, Value, &set>(context->hash_class, "[]="); }
void define_module(RefNode *m, const FoxStatic *a_fs, FoxGlobal *a_fg) { fs = a_fs; fg = a_fg; mod_markdown = m; mod_xml = fs->get_module_by_name("marshal.xml", -1, TRUE, FALSE); xst = mod_xml->u.m.ext; fs->add_unresolved_ptr(m, mod_xml, "XMLElem", &cls_xmlelem); fs->add_unresolved_ptr(m, mod_xml, "XMLText", &cls_xmltext); fs->add_unresolved_ptr(m, mod_xml, "XMLNodeList", &cls_nodelist); str_link_callback = fs->intern("link_callback", -1); str_image_callback = fs->intern("image_callback", -1); str_inline_plugin = fs->intern("inline_plugin", -1); str_block_plugin = fs->intern("block_plugin", -1); define_class(m); define_function(m); }
void Bignum::initialize() { context->bignum_class = define_class("Bignum", context->integer_class); method<Self<Bignum>, Optional<Arg::Fixnum>, &to_s>(context->bignum_class, "to_s"); method<Self<Bignum>, &zero>(context->bignum_class, "zero?"); method<Self<Bignum>, &neg>(context->bignum_class, "-@"); method<Self<Bignum>, Arg::Fixnum, &lshift>(context->bignum_class, "<<"); method<Self<Bignum>, Arg::Fixnum, &rshift>(context->bignum_class, ">>"); method<Self<Bignum>, Value, &bitwise_and>(context->bignum_class, "&"); method<Self<Bignum>, Value, &bitwise_xor>(context->bignum_class, "^"); method<Self<Bignum>, Value, &bitwise_or>(context->bignum_class, "|"); method<Self<Bignum>, Arg::Fixnum, &pow>(context->bignum_class, "**"); method<Self<Bignum>, Value, &add>(context->bignum_class, "+"); method<Self<Bignum>, Value, &sub>(context->bignum_class, "-"); method<Self<Bignum>, Value, &mul>(context->bignum_class, "*"); method<Self<Bignum>, Value, &div>(context->bignum_class, "/"); method<Self<Bignum>, Value, &mod>(context->bignum_class, "%"); method<Self<Bignum>, Value, &compare>(context->bignum_class, "<=>"); method<Self<Bignum>, Value, &coerce>(context->bignum_class, "coerce"); }
void Init_hash() { cHash = define_class(intern("Hash"), cObject); }
void Init_numeric() { cNumeric = define_class(intern("Numeric"), cObject); }
void Method::initialize() { context->method_class = define_class("Method", context->object_class); }