static mrb_value mrb_groonga_init(mrb_state *mrb, mrb_value self) { grn_ctx *ctx = mrb->ud; mrb_undef_class_method(mrb, ctx->impl->mrb.module, "init"); mrb_define_class(mrb, "LoadError", mrb_class_get(mrb, "ScriptError")); mrb_define_method(mrb, mrb->kernel_module, "load", mrb_kernel_load, MRB_ARGS_REQ(1)); { mrb_value load_path; const char *plugins_dir; const char *system_ruby_scripts_dir; load_path = mrb_ary_new(mrb); plugins_dir = grn_plugin_get_system_plugins_dir(); mrb_ary_push(mrb, load_path, mrb_str_new_cstr(mrb, plugins_dir)); system_ruby_scripts_dir = grn_mrb_get_system_ruby_scripts_dir(ctx); mrb_ary_push(mrb, load_path, mrb_str_new_cstr(mrb, system_ruby_scripts_dir)); mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$LOAD_PATH"), load_path); } grn_mrb_load(ctx, "require.rb"); grn_mrb_load(ctx, "initialize/pre.rb"); grn_mrb_converter_init(ctx); grn_mrb_error_init(ctx); grn_mrb_id_init(ctx); grn_mrb_operator_init(ctx); grn_mrb_command_version_init(ctx); grn_mrb_ctx_init(ctx); grn_mrb_logger_init(ctx); grn_mrb_query_logger_init(ctx); grn_mrb_void_init(ctx); grn_mrb_bulk_init(ctx); grn_mrb_cache_init(ctx); grn_mrb_object_init(ctx); grn_mrb_object_flags_init(ctx); grn_mrb_database_init(ctx); grn_mrb_table_init(ctx); grn_mrb_array_init(ctx); grn_mrb_hash_table_init(ctx); grn_mrb_patricia_trie_init(ctx); grn_mrb_double_array_trie_init(ctx); grn_mrb_table_group_flags_init(ctx); grn_mrb_table_group_result_init(ctx); grn_mrb_table_sort_flags_init(ctx); grn_mrb_table_sort_key_init(ctx); grn_mrb_record_init(ctx); grn_mrb_column_init(ctx); grn_mrb_fixed_size_column_init(ctx); grn_mrb_variable_size_column_init(ctx); grn_mrb_index_column_init(ctx); grn_mrb_index_cursor_init(ctx); grn_mrb_type_init(ctx); grn_mrb_expr_init(ctx); grn_mrb_accessor_init(ctx); grn_mrb_procedure_init(ctx); grn_mrb_command_init(ctx); grn_mrb_command_input_init(ctx); grn_mrb_table_cursor_init(ctx); grn_mrb_table_cursor_flags_init(ctx); grn_mrb_content_type_init(ctx); grn_mrb_writer_init(ctx); grn_mrb_config_init(ctx); grn_mrb_load(ctx, "initialize/post.rb"); return mrb_nil_value(); }
static void grn_ctx_impl_mrb_init_bindings(grn_ctx *ctx) { mrb_state *mrb = ctx->impl->mrb.state; mrb->ud = ctx; ctx->impl->mrb.module = mrb_define_module(mrb, "Groonga"); mrb_define_class(mrb, "LoadError", mrb_class_get(mrb, "ScriptError")); mrb_define_method(mrb, mrb->kernel_module, "load", mrb_kernel_load, MRB_ARGS_REQ(1)); { mrb_value load_path; const char *plugins_dir; const char *system_ruby_scripts_dir; load_path = mrb_ary_new(mrb); plugins_dir = grn_plugin_get_system_plugins_dir(); mrb_ary_push(mrb, load_path, mrb_str_new_cstr(mrb, plugins_dir)); system_ruby_scripts_dir = grn_mrb_get_system_ruby_scripts_dir(ctx); mrb_ary_push(mrb, load_path, mrb_str_new_cstr(mrb, system_ruby_scripts_dir)); mrb_gv_set(mrb, mrb_intern_cstr(mrb, "$LOAD_PATH"), load_path); } grn_mrb_load(ctx, "require.rb"); grn_mrb_load(ctx, "initialize/pre.rb"); grn_mrb_converter_init(ctx); grn_mrb_error_init(ctx); grn_mrb_id_init(ctx); grn_mrb_operator_init(ctx); grn_mrb_ctx_init(ctx); grn_mrb_logger_init(ctx); grn_mrb_void_init(ctx); grn_mrb_bulk_init(ctx); grn_mrb_object_init(ctx); grn_mrb_object_flags_init(ctx); grn_mrb_database_init(ctx); grn_mrb_table_init(ctx); grn_mrb_array_init(ctx); grn_mrb_hash_table_init(ctx); grn_mrb_patricia_trie_init(ctx); grn_mrb_double_array_trie_init(ctx); grn_mrb_column_init(ctx); grn_mrb_fixed_size_column_init(ctx); grn_mrb_variable_size_column_init(ctx); grn_mrb_index_column_init(ctx); grn_mrb_index_cursor_init(ctx); grn_mrb_type_init(ctx); grn_mrb_expr_init(ctx); grn_mrb_accessor_init(ctx); grn_mrb_procedure_init(ctx); grn_mrb_command_init(ctx); grn_mrb_command_input_init(ctx); grn_mrb_table_cursor_init(ctx); grn_mrb_table_cursor_flags_init(ctx); grn_mrb_content_type_init(ctx); grn_mrb_writer_init(ctx); grn_mrb_load(ctx, "initialize/post.rb"); }