void Init_load() { const char *var_load_path = "$:"; ID id_load_path = rb_intern(var_load_path); rbo_enabled = !ruby_is_miniruby && getenv("VM_DISABLE_RBO") == NULL; rb_define_virtual_variable("$:", rb_vm_load_path, 0); rb_alias_variable((rb_intern)("$-I"), id_load_path); rb_alias_variable((rb_intern)("$LOAD_PATH"), id_load_path); rb_define_virtual_variable("$\"", rb_vm_loaded_features, 0); rb_define_virtual_variable("$LOADED_FEATURES", rb_vm_loaded_features, 0); rb_objc_define_module_function(rb_mKernel, "load", rb_f_load, -1); rb_objc_define_module_function(rb_mKernel, "require", rb_f_require_imp, 1); rb_objc_define_method(rb_cModule, "autoload", rb_mod_autoload, 2); rb_objc_define_method(rb_cModule, "autoload?", rb_mod_autoload_p, 1); rb_objc_define_module_function(rb_mKernel, "autoload", rb_f_autoload, 2); rb_objc_define_module_function(rb_mKernel, "autoload?", rb_f_autoload_p, 1); rb_objc_define_module_function(rb_mKernel, "framework", rb_require_framework, -1); }
void Init_load(void) { #undef rb_intern #define rb_intern(str) rb_intern2((str), strlen(str)) rb_vm_t *vm = GET_VM(); static const char var_load_path[] = "$:"; ID id_load_path = rb_intern2(var_load_path, sizeof(var_load_path)-1); rb_define_hooked_variable(var_load_path, (VALUE*)vm, load_path_getter, rb_gvar_readonly_setter); rb_alias_variable(rb_intern("$-I"), id_load_path); rb_alias_variable(rb_intern("$LOAD_PATH"), id_load_path); vm->load_path = rb_ary_new(); vm->expanded_load_path = rb_ary_tmp_new(0); vm->load_path_snapshot = rb_ary_tmp_new(0); vm->load_path_check_cache = 0; rb_define_virtual_variable("$\"", get_loaded_features, 0); rb_define_virtual_variable("$LOADED_FEATURES", get_loaded_features, 0); vm->loaded_features = rb_ary_new(); vm->loaded_features_snapshot = rb_ary_tmp_new(0); vm->loaded_features_index = st_init_strtable(); rb_define_global_function("load", rb_f_load, -1); rb_define_global_function("require", rb_f_require, 1); rb_define_global_function("require_relative", rb_f_require_relative, 1); rb_define_method(rb_cModule, "autoload", rb_mod_autoload, 2); rb_define_method(rb_cModule, "autoload?", rb_mod_autoload_p, 1); rb_define_global_function("autoload", rb_f_autoload, 2); rb_define_global_function("autoload?", rb_f_autoload_p, 1); ruby_dln_librefs = rb_ary_tmp_new(0); rb_gc_register_mark_object(ruby_dln_librefs); }
// invoked in the main thread void CRScriptCore::DefineGlobalProperties(LPCSTR pObjName) { static char merge[] = "begin\r\n" "%c%s.ole_put_methods.map{|x| x.name} | %c%s.ole_get_methods.map{|x| x.name}\r\n" "rescue RuntimeError\r\n" "[]\r\n" "end\r\n"; size_t alloclen = sizeof(merge) + strlen(pObjName) * 2 + 16; char* p = reinterpret_cast<LPSTR>(alloca(alloclen + 1)); int cb = sprintf(p, merge, prefix, pObjName, prefix, pObjName); #if defined(__IRubyEngine_INTERFACE_DEFINED__) VALUE args[] = { rb_str_new(p, cb), rb_str_new("ActiveScriptRuby", 16), INT2NUM(1) }; VALUE a = rb_obj_instance_eval(3, args, GetModuleValue()); #else VALUE a = rb_eval_string(p); #endif for (int i = 0; i < RARRAY_LEN(a); i++) { VALUE name = rb_ary_entry(a, i); char* prop = StringValueCStr(name); if (strlen(prop) > alloclen) { continue; // too long name } sprintf(p, "$%s", prop); rb_define_virtual_variable(p, (VALUE(*)(ANYARGS))GlobalGetter, (void(*)(ANYARGS))GlobalSetter); } }
void Init_eval(void) { rb_define_virtual_variable("$@", errat_getter, errat_setter); rb_define_virtual_variable("$!", errinfo_getter, 0); rb_objc_define_module_function(rb_mKernel, "eval", rb_f_eval, -1); rb_objc_define_module_function(rb_mKernel, "iterator?", rb_f_block_given_p, 0); rb_objc_define_module_function(rb_mKernel, "block_given?", rb_f_block_given_p, 0); rb_objc_define_module_function(rb_mKernel, "fail", rb_f_raise, -1); rb_objc_define_module_function(rb_mKernel, "raise", rb_f_raise, -1); rb_objc_define_module_function(rb_mKernel, "global_variables", rb_f_global_variables, 0); /* in variable.c */ rb_objc_define_module_function(rb_mKernel, "local_variables", rb_f_local_variables, 0); rb_objc_define_method(rb_mKernel, "__method__", rb_f_method_name, 0); rb_objc_define_method(rb_mKernel, "__callee__", rb_f_method_name, 0); rb_objc_define_private_method(rb_cModule, "append_features", rb_mod_append_features, 1); rb_objc_define_private_method(rb_cModule, "extend_object", rb_mod_extend_object, 1); rb_objc_define_private_method(rb_cModule, "include", rb_mod_include, -1); rb_objc_define_method(rb_cModule, "module_eval", rb_mod_module_eval, -1); rb_objc_define_method(rb_cModule, "class_eval", rb_mod_module_eval, -1); rb_undef_method(rb_cClass, "module_function"); Init_vm_eval(); Init_eval_method(); rb_objc_define_method(*(VALUE *)rb_cModule, "nesting", rb_mod_nesting, -3); rb_objc_define_method(*(VALUE *)rb_cModule, "constants", rb_mod_s_constants, -1); VALUE cTopLevel = *(VALUE *)rb_vm_top_self(); rb_objc_define_method(cTopLevel, "include", top_include, -1); rb_objc_define_method(rb_mKernel, "extend", rb_obj_extend, -1); rb_objc_define_module_function(rb_mKernel, "trace_var", rb_f_trace_var, -1); /* in variable.c */ rb_objc_define_module_function(rb_mKernel, "untrace_var", rb_f_untrace_var, -1); /* in variable.c */ rb_define_virtual_variable("$SAFE", safe_getter, safe_setter); exception_error = rb_exc_new2(rb_eFatal, "exception reentered"); //rb_ivar_set(exception_error, idThrowState, INT2FIX(TAG_FATAL)); GC_RETAIN(exception_error); }
void Init_versioncmp() { rb_define_virtual_variable("$_PSINET_", get_client, set_client); rb_define_virtual_variable("$_PSINETSTRING_", get_client_string, set_client_string); rb_define_virtual_variable("$_PSINETBUFFER_", get_client_buffer, set_client_buffer); rb_define_virtual_variable("$_SIMU_", get_server, set_server); rb_define_virtual_variable("$_SIMUBUFFER_", get_server_buffer, set_server_buffer); rb_define_virtual_variable("$_SIMUSTRING_", get_server_string, set_server_string); rb_define_virtual_variable("$health", lich_health, 0); rb_define_virtual_variable("$mana", lich_mana, 0); rb_define_virtual_variable("$spirit", lich_spirit, 0); rb_define_virtual_variable("$stamina", lich_stamina, 0); rb_define_virtual_variable("$maxhealth", lich_maxhealth, 0); rb_define_virtual_variable("$maxmana", lich_maxmana, 0); rb_define_virtual_variable("$maxspirit", lich_maxspirit, 0); rb_define_virtual_variable("$maxstamina", lich_maxstamina, 0); }
void Init_safe(void) { rb_define_virtual_variable("$SAFE", safe_getter, safe_setter); }