mrb_value mrb_top_self(mrb_state *mrb) { if (!mrb->top_self) { mrb->top_self = (struct RObject*)mrb_obj_alloc(mrb, MRB_TT_OBJECT, mrb->object_class); mrb_define_singleton_method(mrb, mrb->top_self, "inspect", inspect_main, MRB_ARGS_NONE()); mrb_define_singleton_method(mrb, mrb->top_self, "to_s", inspect_main, MRB_ARGS_NONE()); } return mrb_obj_value(mrb->top_self); }
void grn_mrb_conf_init(grn_ctx *ctx) { grn_mrb_data *data = &(ctx->impl->mrb); mrb_state *mrb = data->state; struct RClass *module; module = mrb_define_module_under(mrb, data->module, "Conf"); mrb_define_singleton_method(mrb, (struct RObject *)module, "[]", conf_array_reference, MRB_ARGS_REQ(1)); mrb_define_singleton_method(mrb, (struct RObject *)module, "[]=", conf_array_set, MRB_ARGS_REQ(2)); }
void mrb_mruby_pcap_gem_init(mrb_state *mrb) { struct RClass *pcap, *capt; pcap = mrb_define_module(mrb, "Pcap"); mrb_define_module_function(mrb, pcap, "lookupdev", mrb_pcap_s_lookupdev, ARGS_NONE()); mrb_define_module_function(mrb, pcap, "lookupnet", pcap_s_lookupnet, ARGS_REQ(1)); mrb_define_const(mrb, pcap, "DLT_NULL", mrb_fixnum_value(DLT_NULL)); mrb_define_const(mrb, pcap, "DLT_EN10MB", mrb_fixnum_value(DLT_EN10MB)); mrb_define_const(mrb, pcap, "DLT_PPP", mrb_fixnum_value(DLT_PPP)); #ifdef DLT_RAW mrb_define_const(mrb, pcap, "DLT_RAW", mrb_fixnum_value(DLT_RAW)); #endif capt = mrb_define_class_under(mrb, pcap, "Capture", mrb->object_class); mrb_define_singleton_method(mrb, (struct RObject*)capt, "open_live", mrb_capture_open_live, MRB_ARGS_ARG(1, 3)); mrb_define_method(mrb, capt, "capture", capture, ARGS_NONE()); mrb_define_method(mrb, capt, "close", capture_close, ARGS_NONE()); mrb_define_method(mrb, capt, "datalink", capture_datalink, ARGS_NONE()); mrb_define_method(mrb, capt, "inject", mrb_capture_inject, MRB_ARGS_REQ(1)); mrb_define_method(mrb, capt, "setfilter", capture_setfilter, ARGS_ANY()); }
void mrb_mruby_polarssl_gem_init(mrb_state *mrb) { struct RClass *p, *e, *c, *s, *pkey, *ecdsa, *cipher, *des, *des3; p = mrb_define_module(mrb, "PolarSSL"); pkey = mrb_define_module_under(mrb, p, "PKey"); e = mrb_define_class_under(mrb, p, "Entropy", mrb->object_class); MRB_SET_INSTANCE_TT(e, MRB_TT_DATA); mrb_define_method(mrb, e, "initialize", mrb_entropy_initialize, MRB_ARGS_NONE()); mrb_define_method(mrb, e, "gather", mrb_entropy_gather, MRB_ARGS_NONE()); c = mrb_define_class_under(mrb, p, "CtrDrbg", mrb->object_class); MRB_SET_INSTANCE_TT(c, MRB_TT_DATA); mrb_define_method(mrb, c, "initialize", mrb_ctrdrbg_initialize, MRB_ARGS_REQ(1) | MRB_ARGS_OPT(1)); mrb_define_singleton_method(mrb, (struct RObject*)c, "self_test", mrb_ctrdrbg_self_test, MRB_ARGS_NONE()); s = mrb_define_class_under(mrb, p, "SSL", mrb->object_class); MRB_SET_INSTANCE_TT(s, MRB_TT_DATA); mrb_define_method(mrb, s, "initialize", mrb_ssl_initialize, MRB_ARGS_NONE()); // 0: Endpoint mode for acting as a client. mrb_define_const(mrb, s, "SSL_IS_CLIENT", mrb_fixnum_value(SSL_IS_CLIENT)); // 0: Certificate verification mode for doing no verification. mrb_define_const(mrb, s, "SSL_VERIFY_NONE", mrb_fixnum_value(SSL_VERIFY_NONE)); // 1: Certificate verification mode for optional verification. mrb_define_const(mrb, s, "SSL_VERIFY_OPTIONAL", mrb_fixnum_value(SSL_VERIFY_OPTIONAL)); // 2: Certificate verification mode for having required verification. mrb_define_const(mrb, s, "SSL_VERIFY_REQUIRED", mrb_fixnum_value(SSL_VERIFY_REQUIRED)); mrb_define_method(mrb, s, "set_endpoint", mrb_ssl_set_endpoint, MRB_ARGS_REQ(1)); mrb_define_method(mrb, s, "set_authmode", mrb_ssl_set_authmode, MRB_ARGS_REQ(1)); mrb_define_method(mrb, s, "set_rng", mrb_ssl_set_rng, MRB_ARGS_REQ(1)); mrb_define_method(mrb, s, "set_socket", mrb_ssl_set_socket, MRB_ARGS_REQ(1)); mrb_define_method(mrb, s, "handshake", mrb_ssl_handshake, MRB_ARGS_NONE()); mrb_define_method(mrb, s, "write", mrb_ssl_write, MRB_ARGS_REQ(1)); mrb_define_method(mrb, s, "read", mrb_ssl_read, MRB_ARGS_REQ(1)); mrb_define_method(mrb, s, "bytes_available", mrb_ssl_bytes_available, MRB_ARGS_NONE()); mrb_define_method(mrb, s, "fileno", mrb_ssl_fileno, MRB_ARGS_NONE()); mrb_define_method(mrb, s, "close_notify", mrb_ssl_close_notify, MRB_ARGS_NONE()); mrb_define_method(mrb, s, "close", mrb_ssl_close, MRB_ARGS_NONE()); ecdsa = mrb_define_class_under(mrb, pkey, "EC", mrb->object_class); MRB_SET_INSTANCE_TT(ecdsa, MRB_TT_DATA); mrb_define_method(mrb, ecdsa, "alloc", mrb_ecdsa_alloc, MRB_ARGS_NONE()); mrb_define_method(mrb, ecdsa, "generate_key", mrb_ecdsa_generate_key, MRB_ARGS_NONE()); mrb_define_method(mrb, ecdsa, "load_pem", mrb_ecdsa_load_pem, MRB_ARGS_REQ(1)); mrb_define_method(mrb, ecdsa, "public_key", mrb_ecdsa_public_key, MRB_ARGS_NONE()); mrb_define_method(mrb, ecdsa, "private_key", mrb_ecdsa_private_key, MRB_ARGS_NONE()); mrb_define_method(mrb, ecdsa, "sign", mrb_ecdsa_sign, MRB_ARGS_REQ(1)); cipher = mrb_define_class_under(mrb, p, "Cipher", mrb->object_class); des = mrb_define_class_under(mrb, cipher, "DES", cipher); mrb_define_class_method(mrb, des, "encrypt", mrb_des_encrypt, MRB_ARGS_REQ(4)); mrb_define_class_method(mrb, des, "decrypt", mrb_des_decrypt, MRB_ARGS_REQ(4)); des3 = mrb_define_class_under(mrb, cipher, "DES3", cipher); mrb_define_class_method(mrb, des3, "encrypt", mrb_des3_encrypt, MRB_ARGS_REQ(4)); mrb_define_class_method(mrb, des3, "decrypt", mrb_des3_decrypt, MRB_ARGS_REQ(4)); }
void grn_mrb_converter_init(grn_ctx *ctx) { grn_mrb_data *data = &(ctx->impl->mrb); mrb_state *mrb = data->state; struct RClass *module; module = mrb_define_module_under(mrb, data->module, "Converter"); mrb_define_singleton_method(mrb, (struct RObject *)module, "convert", mrb_grn_converter_singleton_convert, MRB_ARGS_REQ(2)); }
void grn_mrb_expr_init(grn_ctx *ctx) { mrb_state *mrb = ctx->impl->mrb.state; struct RClass *module = ctx->impl->mrb.module; struct RClass *object_class = ctx->impl->mrb.object_class; struct RClass *klass; klass = mrb_define_class_under(mrb, module, "ScanInfo", mrb->object_class); MRB_SET_INSTANCE_TT(klass, MRB_TT_DATA); mrb_define_method(mrb, klass, "initialize", mrb_grn_scan_info_initialize, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "put_index", mrb_grn_scan_info_put_index, MRB_ARGS_REQ(6)); mrb_define_method(mrb, klass, "op", mrb_grn_scan_info_get_op, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "op=", mrb_grn_scan_info_set_op, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "end=", mrb_grn_scan_info_set_end, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "query=", mrb_grn_scan_info_set_query, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "flags", mrb_grn_scan_info_get_flags, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "flags=", mrb_grn_scan_info_set_flags, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "logical_op", mrb_grn_scan_info_get_logical_op, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "logical_op=", mrb_grn_scan_info_set_logical_op, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "max_interval", mrb_grn_scan_info_get_max_interval, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "max_interval=", mrb_grn_scan_info_set_max_interval, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "similarity_threshold", mrb_grn_scan_info_get_similarity_threshold, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "similarity_threshold=", mrb_grn_scan_info_set_similarity_threshold, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "get_arg", mrb_grn_scan_info_get_arg, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "push_arg", mrb_grn_scan_info_push_arg, MRB_ARGS_REQ(1)); klass = mrb_define_class_under(mrb, module, "ExpressionCode", mrb->object_class); MRB_SET_INSTANCE_TT(klass, MRB_TT_DATA); mrb_define_method(mrb, klass, "initialize", mrb_grn_expr_code_initialize, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "inspect", mrb_grn_expr_code_inspect, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "weight", mrb_grn_expr_code_get_weight, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "value", mrb_grn_expr_code_get_value, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "op", mrb_grn_expr_code_get_op, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "flags", mrb_grn_expr_code_get_flags, MRB_ARGS_NONE()); { struct RClass *expression_code_class = klass; struct RClass *flags_module; flags_module = mrb_define_module_under(mrb, expression_code_class, "Flags"); mrb_define_const(mrb, flags_module, "RELATIONAL_EXPRESSION", mrb_fixnum_value(GRN_EXPR_CODE_RELATIONAL_EXPRESSION)); } klass = mrb_define_class_under(mrb, module, "Expression", object_class); MRB_SET_INSTANCE_TT(klass, MRB_TT_DATA); mrb_define_singleton_method(mrb, (struct RObject *)klass, "create", mrb_grn_expression_singleton_create, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "initialize", mrb_grn_expression_initialize, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "codes", mrb_grn_expression_codes, MRB_ARGS_NONE()); mrb_define_method(mrb, klass, "get_var_by_offset", mrb_grn_expression_get_var_by_offset, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "take_object", mrb_grn_expression_take_object, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "allocate_constant", mrb_grn_expression_allocate_constant, MRB_ARGS_REQ(1)); mrb_define_method(mrb, klass, "parse", mrb_grn_expression_parse, MRB_ARGS_ARG(1, 1)); mrb_define_method(mrb, klass, "append_object", mrb_grn_expression_append_object, MRB_ARGS_REQ(2)); mrb_define_method(mrb, klass, "append_constant", mrb_grn_expression_append_constant, MRB_ARGS_REQ(3)); mrb_define_method(mrb, klass, "append_operator", mrb_grn_expression_append_operator, MRB_ARGS_REQ(2)); }
void mrb_define_class_method(mrb_state *mrb, struct RClass *c, const char *name, mrb_func_t func, int aspec) { mrb_define_singleton_method(mrb, (struct RObject*)c, name, func, aspec); }
void mrb_mruby_env_gem_init(mrb_state *mrb) { struct RObject *e; origenviron = environ; e = (struct RObject*) mrb_obj_alloc(mrb, MRB_TT_OBJECT, mrb->object_class); mrb_include_module(mrb, (struct RClass*)e, mrb_class_get(mrb, "Enumerable")); mrb_define_singleton_method(mrb, e,"[]", mrb_env_aget, ARGS_REQ(1)); mrb_define_singleton_method(mrb, e,"[]=", mrb_env_aset, ARGS_REQ(2)); mrb_define_singleton_method(mrb, e,"store", mrb_env_aset, ARGS_REQ(2)); mrb_define_singleton_method(mrb, e,"clear", mrb_env_clear, ARGS_NONE()); mrb_define_singleton_method(mrb, e,"delete", mrb_env_delete, ARGS_REQ(1)); mrb_define_singleton_method(mrb, e,"keys", mrb_env_keys, ARGS_NONE()); mrb_define_singleton_method(mrb, e,"values", mrb_env_values, ARGS_NONE()); mrb_define_singleton_method(mrb, e,"size", mrb_env_size, ARGS_NONE()); mrb_define_singleton_method(mrb, e,"to_hash", mrb_env_to_hash, ARGS_NONE()); mrb_define_singleton_method(mrb, e,"to_a", mrb_env_to_a, ARGS_NONE()); mrb_define_singleton_method(mrb, e,"inspect", mrb_env_inspect, ARGS_NONE()); mrb_define_singleton_method(mrb, e,"to_s", mrb_env_to_s, ARGS_NONE()); mrb_define_global_const(mrb, "ENV", mrb_obj_value(e)); }