Ruby 3.2.1p31 (2023-02-08 revision 31819e82c88c6f8ecfaeb162519bfa26a14b21fd)
|
#include <rtypeddata.h>
Data Fields | ||
const char * | wrap_struct_name | |
Name of structs of this kind. | ||
struct { | ||
RUBY_DATA_FUNC dmark | ||
This function is called when the object is experiencing GC marks. More... | ||
RUBY_DATA_FUNC dfree | ||
This function is called when the object is no longer used. More... | ||
size_t(* dsize )(const void *) | ||
This function is to query the size of the underlying memory regions. More... | ||
RUBY_DATA_FUNC dcompact | ||
This function is called when the object is relocated. More... | ||
void * reserved [1] | ||
This field is reserved for future extension. More... | ||
} | function | |
Function pointers. | ||
const rb_data_type_t * | parent | |
Parent of this class. | ||
void * | data | |
Type-specific static data. | ||
VALUE | flags | |
Type-specific behavioural characteristics. | ||
struct { | ||
RUBY_DATA_FUNC dmark | ||
RUBY_DATA_FUNC dfree | ||
size_t(* dsize )(const void *) | ||
RUBY_DATA_FUNC dcompact | ||
void * reserved [1] | ||
} | function | |
Definition at line 190 of file rtypeddata.h.
void * rb_data_type_struct::data |
Type-specific static data.
This area can be used for any purpose by a programmer who define the type. Ruby does not manage this at all.
Definition at line 286 of file rtypeddata.h.
RUBY_DATA_FUNC rb_data_type_struct::dcompact |
This function is called when the object is relocated.
Like rb_data_type_struct::dmark, you need to update references to Ruby objects inside of your structs.
Definition at line 241 of file rtypeddata.h.
RUBY_DATA_FUNC rb_data_type_struct::dfree |
This function is called when the object is no longer used.
You need to do whatever necessary to avoid memory leaks.
Definition at line 220 of file rtypeddata.h.
RUBY_DATA_FUNC rb_data_type_struct::dmark |
This function is called when the object is experiencing GC marks.
If it contains references to other Ruby objects, you need to mark them also. Otherwise GC will smash your data.
Definition at line 211 of file rtypeddata.h.
size_t(* rb_data_type_struct::dsize) (const void *) |
This function is to query the size of the underlying memory regions.
Definition at line 230 of file rtypeddata.h.
VALUE rb_data_type_struct::flags |
Type-specific behavioural characteristics.
This is a bitfield. It is an EXTREMELY WISE IDEA to leave this field blank. It is designed so that setting zero is the safest thing to do. If you risk to set any bits on, you have to know exactly what you are doing.
Definition at line 299 of file rtypeddata.h.
struct { ... } rb_data_type_struct::function |
Function pointers.
Resembles C++ vtbl
.
const rb_data_type_t * rb_data_type_struct::parent |
Parent of this class.
Sometimes C structs have inheritance-like relationships. An example is struct sockaddr
and its family. If you design such things, make rb_data_type_t for each of them and connect using this field. Ruby can then transparently cast your data back and forth when you call TypedData_Get_Struct().
Definition at line 280 of file rtypeddata.h.
Referenced by rb_typeddata_inherited_p().
void* rb_data_type_struct::reserved[1] |
This field is reserved for future extension.
For now, it must be filled with zeros.
Definition at line 247 of file rtypeddata.h.
const char * rb_data_type_struct::wrap_struct_name |
Name of structs of this kind.
This is used for diagnostic purposes. This has to be unique in the process, but doesn't has to be a valid C/Ruby identifier.
Definition at line 197 of file rtypeddata.h.
Referenced by rb_check_typeddata().