Ruby
3.4.0dev (2024-12-06 revision 892c46283a5ea4179500d951c9d4866c0051f27b)
|
Public APIs related to rb_cObject. More...
#include "ruby/internal/attr/const.h"
#include "ruby/internal/attr/deprecated.h"
#include "ruby/internal/attr/nonnull.h"
#include "ruby/internal/attr/pure.h"
#include "ruby/internal/dllexport.h"
#include "ruby/internal/value.h"
Go to the source code of this file.
Macros | |
#define | RB_OBJ_INIT_COPY(obj, orig) ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1)) |
This macro is (used but) mysterious. More... | |
#define | OBJ_INIT_COPY(obj, orig) RB_OBJ_INIT_COPY(obj, orig) |
Old name of RB_OBJ_INIT_COPY. More... | |
Functions | |
VALUE | rb_class_new_instance_pass_kw (int argc, const VALUE *argv, VALUE klass) |
Identical to rb_class_new_instance(), except it passes the passed keywords if any to the #initialize method. More... | |
VALUE | rb_class_new_instance (int argc, const VALUE *argv, VALUE klass) |
Allocates, then initialises an instance of the given class. More... | |
VALUE | rb_class_new_instance_kw (int argc, const VALUE *argv, VALUE klass, int kw_splat) |
Identical to rb_class_new_instance(), except you can specify how to handle the last element of the given array. More... | |
int | rb_eql (VALUE lhs, VALUE rhs) |
Checks for equality of the passed objects, in terms of Object#eql? . More... | |
VALUE | rb_any_to_s (VALUE obj) |
Generates a textual representation of the given object. More... | |
VALUE | rb_inspect (VALUE obj) |
Generates a human-readable textual representation of the given object. More... | |
VALUE | rb_obj_is_instance_of (VALUE obj, VALUE klass) |
Queries if the given object is a direct instance of the given class. More... | |
VALUE | rb_obj_is_kind_of (VALUE obj, VALUE klass) |
Queries if the given object is an instance (of possibly descendants) of the given class. More... | |
VALUE | rb_obj_alloc (VALUE klass) |
Allocates an instance of the given class. More... | |
VALUE | rb_obj_clone (VALUE obj) |
Produces a shallow copy of the given object. More... | |
VALUE | rb_obj_dup (VALUE obj) |
Duplicates the given object. More... | |
VALUE | rb_obj_init_copy (VALUE src, VALUE dst) |
Default implementation of #initialize_copy , #initialize_dup and #initialize_clone . More... | |
VALUE | rb_obj_freeze (VALUE obj) |
Just calls rb_obj_freeze_inline() inside. More... | |
VALUE | rb_obj_frozen_p (VALUE obj) |
Just calls RB_OBJ_FROZEN() inside. More... | |
VALUE | rb_obj_id (VALUE obj) |
Finds or creates an integer primary key of the given object. More... | |
VALUE | rb_memory_id (VALUE obj) |
Identical to rb_obj_id(), except it hesitates from allocating a new instance of rb_cInteger. More... | |
VALUE | rb_class_real (VALUE klass) |
Finds a "real" class. More... | |
VALUE | rb_class_inherited_p (VALUE scion, VALUE ascendant) |
Determines if the given two modules are relatives. More... | |
VALUE | rb_class_superclass (VALUE klass) |
Queries the parent of the given class. More... | |
VALUE | rb_convert_type (VALUE val, int type, const char *name, const char *mid) |
Converts an object into another type. More... | |
VALUE | rb_check_convert_type (VALUE val, int type, const char *name, const char *mid) |
Identical to rb_convert_type(), except it returns RUBY_Qnil instead of raising exceptions, in case of conversion failure. More... | |
VALUE | rb_check_to_integer (VALUE val, const char *mid) |
Identical to rb_check_convert_type(), except the return value type is fixed to rb_cInteger. More... | |
VALUE | rb_check_to_float (VALUE val) |
This is complicated. More... | |
VALUE | rb_to_int (VALUE val) |
Identical to rb_check_to_int(), except it raises in case of conversion mismatch. More... | |
VALUE | rb_check_to_int (VALUE val) |
Identical to rb_check_to_integer(), except it uses #to_int for conversion. More... | |
VALUE | rb_Integer (VALUE val) |
This is the logic behind Kernel#Integer . More... | |
VALUE | rb_to_float (VALUE val) |
Identical to rb_check_to_float(), except it raises on error. More... | |
VALUE | rb_Float (VALUE val) |
This is the logic behind Kernel#Float . More... | |
VALUE | rb_String (VALUE val) |
This is the logic behind Kernel#String . More... | |
VALUE | rb_Array (VALUE val) |
This is the logic behind Kernel#Array . More... | |
VALUE | rb_Hash (VALUE val) |
This is the logic behind Kernel#Hash . More... | |
double | rb_cstr_to_dbl (const char *str, int mode) |
Converts a textual representation of a real number into a numeric, which is the nearest value that the return type can represent, of the value that the argument represents. More... | |
double | rb_str_to_dbl (VALUE str, int mode) |
Identical to rb_cstr_to_dbl(), except it accepts a Ruby's string instead of C's. More... | |
Public APIs related to rb_cObject.
RBIMPL
or rbimpl
are implementation details. Don't take them as canon. They could rapidly appear then vanish. The name (path) of this header file is also an implementation detail. Do not expect it to persist at the place it is now. Developers are free to move it anywhere anytime at will. __VA_ARGS__
is always available. We assume C99 for ruby itself but we don't assume languages of extension libraries. They could be written in C++98. Definition in file object.h.
#define RB_OBJ_INIT_COPY | ( | obj, | |
orig | |||
) | ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1)) |
This macro is (used but) mysterious.
Why on earth do we need this?
obj != orig
check is done anyways inside of rb_obj_init_copy()., 1
. Identical to rb_obj_id(), except it hesitates from allocating a new instance of rb_cInteger.
rb_obj_id() could allocate RUBY_T_BIGNUM objects. That allocation might perhaps impact negatively. On such situations, this function instead returns one-shot temporary small integers that need no allocations at all. The values are guaranteed unique at the moment, but no future promise is made; could be reused. Use of this API should be very instant. It is a failure to store the returned integer to somewhere else.
In short it is difficult to use.
[in] | obj | Arbitrary ruby object. |
Finds or creates an integer primary key of the given object.
In the old days this function was a purely arithmetic operation that maps the underlying memory address where the object resides into a Ruby's integer. Some time around 2.x this changed. It no longer relates its return values to C level pointers. This function assigns some random number to the given object if absent. The same number will be returned on all subsequent requests. No two active objects share a number.
[in] | obj | Arbitrary ruby object. |
obj
.