Ruby: include/ruby/internal/intern/object.h Source File

Ruby 3.2.5p208 (2024-07-26 revision 31d0f1a2e7dbfb60731d1f05b868e1d578cda493)

object.h
Go to the documentation of this file.
1#ifndef RBIMPL_INTERN_OBJECT_H /*-*-C++-*-vi:se ft=cpp:*/
2#define RBIMPL_INTERN_OBJECT_H
23#include "ruby/internal/attr/const.h"
24#include "ruby/internal/attr/deprecated.h"
25#include "ruby/internal/attr/nonnull.h"
26#include "ruby/internal/attr/pure.h"
27#include "ruby/internal/dllexport.h"
28#include "ruby/internal/value.h"
29
30 RBIMPL_SYMBOL_EXPORT_BEGIN()
31
32
38#define RB_OBJ_INIT_COPY(obj, orig) \
39 ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1))
41#define OBJ_INIT_COPY(obj, orig) RB_OBJ_INIT_COPY(obj, orig)
42
43/* object.c */
44
57 VALUE rb_class_new_instance_pass_kw(int argc, const VALUE *argv, VALUE klass);
58
71 VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass);
72
88 VALUE rb_class_new_instance_kw(int argc, const VALUE *argv, VALUE klass, int kw_splat);
89
100int rb_eql(VALUE lhs, VALUE rhs);
101
110 VALUE rb_any_to_s(VALUE obj);
111
121 VALUE rb_inspect(VALUE obj);
122
132 VALUE rb_obj_is_instance_of(VALUE obj, VALUE klass);
133
144 VALUE rb_obj_is_kind_of(VALUE obj, VALUE klass);
145
163 VALUE rb_obj_alloc(VALUE klass);
164
179 VALUE rb_obj_clone(VALUE obj);
180
190 VALUE rb_obj_dup(VALUE obj);
191
203 VALUE rb_obj_init_copy(VALUE src, VALUE dst);
204
212 VALUE rb_obj_freeze(VALUE obj);
213
214 RBIMPL_ATTR_PURE()
223 VALUE rb_obj_frozen_p(VALUE obj);
224
225/* gc.c */
226
245 VALUE rb_obj_id(VALUE obj);
246
247 RBIMPL_ATTR_CONST()
266 VALUE rb_memory_id(VALUE obj);
267
268/* object.c */
269
270 RBIMPL_ATTR_PURE()
282 VALUE rb_class_real(VALUE klass);
283
284 RBIMPL_ATTR_PURE()
295 VALUE rb_class_inherited_p(VALUE scion, VALUE ascendant);
296
297 RBIMPL_ATTR_PURE()
310 VALUE rb_class_superclass(VALUE klass);
311
312 RBIMPL_ATTR_NONNULL(())
324 VALUE rb_convert_type(VALUE val, int type, const char *name, const char *mid);
325
326 RBIMPL_ATTR_NONNULL(())
341 VALUE rb_check_convert_type(VALUE val, int type, const char *name, const char *mid);
342
343 RBIMPL_ATTR_NONNULL(())
354 VALUE rb_check_to_integer(VALUE val, const char *mid);
355
376 VALUE rb_check_to_float(VALUE val);
377
386 VALUE rb_to_int(VALUE val);
387
396 VALUE rb_check_to_int(VALUE val);
397
412 VALUE rb_Integer(VALUE val);
413
421 VALUE rb_to_float(VALUE val);
422
436 VALUE rb_Float(VALUE val);
437
446 VALUE rb_String(VALUE val);
447
456 VALUE rb_Array(VALUE val);
457
467 VALUE rb_Hash(VALUE val);
468
469 RBIMPL_ATTR_NONNULL(())
486double rb_cstr_to_dbl(const char *str, int mode);
487
497double rb_str_to_dbl(VALUE str, int mode);
498
499 RBIMPL_SYMBOL_EXPORT_END()
500
501#endif /* RBIMPL_INTERN_OBJECT_H */
const.h
Defines RBIMPL_ATTR_CONST.
RBIMPL_ATTR_CONST
#define RBIMPL_ATTR_CONST()
Wraps (or simulates) __attribute__((const))
Definition const.h:36
deprecated.h
Defines RBIMPL_ATTR_DEPRECATED.
dllexport.h
Tweaking visibility of C variables/functions.
RBIMPL_SYMBOL_EXPORT_END
#define RBIMPL_SYMBOL_EXPORT_END()
Counterpart of RBIMPL_SYMBOL_EXPORT_BEGIN.
Definition dllexport.h:106
RBIMPL_SYMBOL_EXPORT_BEGIN
#define RBIMPL_SYMBOL_EXPORT_BEGIN()
Shortcut macro equivalent to RUBY_SYMBOL_EXPORT_BEGIN extern "C" {.
Definition dllexport.h:97
rb_class_superclass
VALUE rb_class_superclass(VALUE klass)
Queries the parent of the given class.
Definition object.c:1996
rb_convert_type
VALUE rb_convert_type(VALUE val, int type, const char *name, const char *mid)
Converts an object into another type.
Definition object.c:2935
rb_Float
VALUE rb_Float(VALUE val)
This is the logic behind Kernel#Float.
Definition object.c:3533
rb_check_to_int
VALUE rb_check_to_int(VALUE val)
Identical to rb_check_to_integer(), except it uses #to_int for conversion.
Definition object.c:3033
rb_check_convert_type
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,...
Definition object.c:2962
rb_any_to_s
VALUE rb_any_to_s(VALUE obj)
Generates a textual representation of the given object.
Definition object.c:590
rb_obj_alloc
VALUE rb_obj_alloc(VALUE klass)
Allocates an instance of the given class.
Definition object.c:1940
rb_class_new_instance
VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass)
Allocates, then initialises an instance of the given class.
Definition object.c:1981
rb_class_new_instance_kw
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 gi...
Definition object.c:1969
rb_class_new_instance_pass_kw
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 ...
Definition object.c:1958
rb_check_to_float
VALUE rb_check_to_float(VALUE val)
This is complicated.
Definition object.c:3572
rb_Hash
VALUE rb_Hash(VALUE val)
This is the logic behind Kernel#Hash.
Definition object.c:3731
rb_obj_frozen_p
VALUE rb_obj_frozen_p(VALUE obj)
Just calls RB_OBJ_FROZEN() inside.
Definition object.c:1195
rb_obj_init_copy
VALUE rb_obj_init_copy(VALUE src, VALUE dst)
Default implementation of #initialize_copy, #initialize_dup and #initialize_clone.
Definition object.c:537
rb_eql
int rb_eql(VALUE lhs, VALUE rhs)
Checks for equality of the passed objects, in terms of Object#eql?.
Definition object.c:136
rb_str_to_dbl
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.
Definition object.c:3417
rb_Integer
VALUE rb_Integer(VALUE val)
This is the logic behind Kernel#Integer.
Definition object.c:3102
rb_Array
VALUE rb_Array(VALUE val)
This is the logic behind Kernel#Array.
Definition object.c:3688
rb_obj_dup
VALUE rb_obj_dup(VALUE obj)
Duplicates the given object.
Definition object.c:488
rb_inspect
VALUE rb_inspect(VALUE obj)
Generates a human-readable textual representation of the given object.
Definition object.c:601
rb_class_inherited_p
VALUE rb_class_inherited_p(VALUE scion, VALUE ascendant)
Determines if the given two modules are relatives.
Definition object.c:1611
rb_obj_is_instance_of
VALUE rb_obj_is_instance_of(VALUE obj, VALUE klass)
Queries if the given object is a direct instance of the given class.
Definition object.c:732
rb_class_real
VALUE rb_class_real(VALUE klass)
Finds a "real" class.
Definition object.c:181
rb_to_float
VALUE rb_to_float(VALUE val)
Identical to rb_check_to_float(), except it raises on error.
Definition object.c:3562
rb_obj_clone
VALUE rb_obj_clone(VALUE obj)
Produces a shallow copy of the given object.
Definition object.c:442
rb_obj_is_kind_of
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.
Definition object.c:788
rb_cstr_to_dbl
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 th...
Definition object.c:3376
rb_obj_freeze
VALUE rb_obj_freeze(VALUE obj)
Just calls rb_obj_freeze_inline() inside.
Definition object.c:1183
rb_check_to_integer
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.
Definition object.c:3014
rb_String
VALUE rb_String(VALUE val)
This is the logic behind Kernel#String.
Definition object.c:3656
rb_to_int
VALUE rb_to_int(VALUE val)
Identical to rb_check_to_int(), except it raises in case of conversion mismatch.
Definition object.c:3027
rb_obj_id
VALUE rb_obj_id(VALUE obj)
Finds or creates an integer primary key of the given object.
Definition gc.c:4828
rb_memory_id
VALUE rb_memory_id(VALUE obj)
Identical to rb_obj_id(), except it hesitates from allocating a new instance of rb_cInteger.
Definition gc.c:4795
nonnull.h
Defines RBIMPL_ATTR_NONNULL.
RBIMPL_ATTR_NONNULL
#define RBIMPL_ATTR_NONNULL(list)
Wraps (or simulates) __attribute__((nonnull))
Definition nonnull.h:30
pure.h
Defines RBIMPL_ATTR_PURE.
RBIMPL_ATTR_PURE
#define RBIMPL_ATTR_PURE()
Wraps (or simulates) __attribute__((pure))
Definition pure.h:33
value.h
Defines VALUE and ID.
VALUE
uintptr_t VALUE
Type that represents a Ruby object.
Definition value.h:40