Example #1
0
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);
}
Example #2
0
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);
}
Example #3
0
// 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);
	}
}
Example #4
0
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);
}
Example #5
0
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);
}
Example #6
0
void
Init_safe(void)
{
    rb_define_virtual_variable("$SAFE", safe_getter, safe_setter);
}