Ruby
2.5.0dev(2017-10-22revision60238)
|
There are some APIs to define a method from C. More...
Functions | |
void | rb_define_method_id (VALUE klass, ID mid, VALUE(*func)(ANYARGS), int argc) |
void | rb_define_method (VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc) |
void | rb_define_protected_method (VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc) |
void | rb_define_private_method (VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc) |
void | rb_undef_method (VALUE klass, const char *name) |
void | rb_undef_methods_from (VALUE klass, VALUE super) |
void | rb_define_singleton_method (VALUE obj, const char *name, VALUE(*func)(ANYARGS), int argc) |
Defines a singleton method for obj. More... | |
void | rb_define_module_function (VALUE module, const char *name, VALUE(*func)(ANYARGS), int argc) |
Defines a module function for module. More... | |
void | rb_define_global_function (const char *name, VALUE(*func)(ANYARGS), int argc) |
Defines a global function. More... | |
void | rb_define_alias (VALUE klass, const char *name1, const char *name2) |
Defines an alias of a method. More... | |
void | rb_define_attr (VALUE klass, const char *name, int read, int write) |
Defines (a) public accessor method(s) for an attribute. More... | |
VALUE | rb_keyword_error_new (const char *error, VALUE keys) |
NORETURN (static void rb_keyword_error(const char *error, VALUE keys)) | |
NORETURN (static void unknown_keyword_error(VALUE hash, const ID *table, int keywords)) | |
VALUE | rb_extract_keywords (VALUE *orighash) |
int | rb_get_kwargs (VALUE keyword_hash, const ID *table, int required, int optional, VALUE *values) |
int | rb_scan_args (int argc, const VALUE *argv, const char *fmt,...) |
int | rb_class_has_methods (VALUE c) |
int | rb_block_given_p (void) |
Determines if the current method is given a block. More... | |
int | rb_iterator_p (void) |
Determines if the current method is an interator. More... | |
void | rb_need_block (void) |
Declares that the current method needs a block. More... | |
ID | rb_frame_this_func (void) |
The original name of the current method. More... | |
ID | rb_frame_callee (void) |
The name of the current method. More... | |
There are some APIs to define a method from C.
These API takes a C function as a method body.
This form is a normal C function, excepting it takes a receiver object as the first argument.
This form takes three parameters: argc, argv and self. self is the receiver. argc is the number of arguments. argv is a pointer to an array of the arguments.
This form takes two parameters: self and args. self is the receiver. args is an Array object which contains the arguments.
NORETURN | ( | static void | rb_keyword_errorconst char *error, VALUE keys | ) |
Referenced by rb_keyword_error_new().
NORETURN | ( | static void | unknown_keyword_errorVALUE hash, const ID *table, int keywords | ) |
int rb_block_given_p | ( | void | ) |
Determines if the current method is given a block.
zero | if not given |
non-zero | if given |
Definition at line 835 of file eval.c.
References rb_execution_context_struct::cfp, rb_thread_struct::ec, FALSE, GET_THREAD, rb_vm_frame_block_handler(), TRUE, and VM_BLOCK_HANDLER_NONE.
Referenced by ossl_pem_passwd_cb(), rb_ary_delete(), rb_iterator_p(), rb_method_call(), and rb_need_block().
int rb_class_has_methods | ( | VALUE | c | ) |
Definition at line 2040 of file class.c.
References FALSE, rb_id_table_size(), RCLASS_M_TBL, and TRUE.
Defines an alias of a method.
klass | the class which the original method belongs to |
name1 | a new name for the method |
name2 | the original name of the method |
Definition at line 1758 of file class.c.
References rb_alias(), and rb_intern.
Defines (a) public accessor method(s) for an attribute.
klass | the class which the attribute will belongs to |
name | name of the attribute |
read | a getter method for the attribute will be defined if read is non-zero. |
write | a setter method for the attribute will be defined if write is non-zero. |
Defines a global function.
name | name of the function |
func | the method body |
argc | the number of parameters, or -1 or -2. see Defining methods. |
Definition at line 1745 of file class.c.
References rb_define_module_function(), and rb_mKernel.
Referenced by Init_jump(), Init_signal(), Init_vm_eval(), Init_vm_trace(), and InitVM_Random().
Definition at line 1515 of file class.c.
References METHOD_VISI_PUBLIC, rb_add_method_cfunc(), and rb_intern.
Referenced by Init_Bignum(), Init_Binding(), Init_Comparable(), Init_Enumerable(), Init_eval_method(), Init_Exception(), Init_ISeq(), Init_nonblock(), Init_pack(), Init_socket(), Init_wait(), Init_win32ole_method(), Init_win32ole_variable(), InitVM_console(), InitVM_Enumerator(), InitVM_transcode(), rb_define_singleton_method(), rsock_init_ancdata(), rsock_init_ipsocket(), rsock_init_sockifaddr(), rsock_init_sockopt(), rsock_init_sockssocket(), rsock_init_tcpserver(), rsock_init_udpsocket(), rsock_init_unixserver(), rsock_init_unixsocket(), and ruby_Init_Fiber_as_Coroutine().
Definition at line 1509 of file class.c.
References METHOD_VISI_PUBLIC, and rb_add_method_cfunc().
void rb_define_module_function | ( | VALUE | module, |
const char * | name, | ||
VALUE(*)(ANYARGS) | func, | ||
int | argc | ||
) |
Defines a module function for module.
module | an module or a class. |
name | name of the function |
func | the method body |
argc | the number of parameters, or -1 or -2. see Defining methods. |
Definition at line 1731 of file class.c.
References rb_define_private_method(), and rb_define_singleton_method().
Referenced by exp1(), Init_coverage(), Init_fiddle(), Init_nkf(), Init_object_tracing(), Init_objspace(), Init_objspace_dump(), Init_openssl(), Init_ossl_pkey(), Init_ossl_rand(), and rb_define_global_function().
Definition at line 1527 of file class.c.
References METHOD_VISI_PRIVATE, rb_add_method_cfunc(), and rb_intern.
Referenced by Init_cparse(), Init_psych_to_ruby(), Init_psych_yaml_tree(), InitVM_resolv(), rb_define_module_function(), and rsock_init_unixserver().
void rb_define_protected_method | ( | VALUE | klass, |
const char * | name, | ||
VALUE(*)(ANYARGS) | func, | ||
int | argc | ||
) |
Definition at line 1521 of file class.c.
References METHOD_VISI_PROTECTED, rb_add_method_cfunc(), and rb_intern.
Defines a singleton method for obj.
obj | an arbitrary object |
name | name of the singleton method |
func | the method body |
argc | the number of parameters, or -1 or -2. see Defining methods. |
Definition at line 1716 of file class.c.
References rb_define_method().
Referenced by Init_Exception(), Init_GC(), Init_ossl_dh(), Init_ossl_dsa(), Init_ossl_engine(), Init_ossl_pkcs12(), Init_ossl_pkcs7(), Init_ossl_rsa(), Init_Proc(), Init_psych(), Init_top_self(), Init_VM(), Init_win32ole_type(), Init_win32ole_typelib(), InitVM_Struct(), rb_define_module_function(), rsock_init_ancdata(), rsock_init_basicsocket(), rsock_init_sockifaddr(), rsock_init_tcpsocket(), and rsock_init_unixsocket().
ID rb_frame_callee | ( | void | ) |
The name of the current method.
The function returns the alias if an alias of the method is called. The function can also return 0 if it is not in a method. This case can happen in a toplevel of a source file, for example.
Definition at line 1120 of file eval.c.
Referenced by rb_insecure_operation(), and rb_secure().
ID rb_frame_this_func | ( | void | ) |
The original name of the current method.
The function returns the original name of the method even if an alias of the method is called. The function can also return 0 if it is not in a method. This case can happen in a toplevel of a source file, for example.
Definition at line 1103 of file eval.c.
Referenced by rb_notimplement().
int rb_get_kwargs | ( | VALUE | keyword_hash, |
const ID * | table, | ||
int | required, | ||
int | optional, | ||
VALUE * | values | ||
) |
Definition at line 1847 of file class.c.
References extract_kwarg, ID2SYM, key, NIL_P, Qnil, Qundef, rb_ary_push(), rb_ary_tmp_new(), st_data_t, and val.
Referenced by rb_num_get_rounding_option().
int rb_iterator_p | ( | void | ) |
Determines if the current method is an interator.
An alias of rb_block_given_p().
Definition at line 852 of file eval.c.
References rb_block_given_p().
Definition at line 1777 of file class.c.
References Check_Type, len, NORETURN(), RARRAY_CONST_PTR, RARRAY_LEN, rb_eArgError, rb_exc_new_str(), rb_sprintf(), rb_str_append(), rb_str_cat_cstr(), rb_sym2str, and T_SYMBOL.
void rb_need_block | ( | void | ) |
Declares that the current method needs a block.
Raises a LocalJumpError
if not given a block.
Definition at line 865 of file eval.c.
References Qnil, rb_block_given_p(), and rb_vm_localjump_error().
Definition at line 1908 of file class.c.
References ISDIGIT, last, NIL_P, Qnil, rb_ary_new(), rb_ary_new4, rb_ary_push(), rb_check_hash_type(), rb_extract_keywords(), and rb_fatal().
Referenced by rb_ary_aref(), rb_f_eval(), rb_f_trace_var(), rb_f_untrace_var(), rb_mod_class_variables(), rb_mod_constants(), rb_obj_singleton_methods(), rsock_bsock_send(), and rsock_s_recvfrom().
Definition at line 1533 of file class.c.
References METHOD_VISI_UNDEF, rb_add_method(), rb_intern, and VM_METHOD_TYPE_UNDEF.
Referenced by Init_Binding(), Init_VM(), and rsock_init_basicsocket().
Definition at line 1547 of file class.c.
References rb_id_table_foreach(), and RCLASS_M_TBL.