Ruby: RData Struct Reference

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

Data Fields
RData Struct Reference

`#include <rdata.h>`

## Data Fields
struct RBasic | basic
| Basic part, including flags and class.
RUBY_DATA_FUNC | dmark
| This function is called when the object is experiencing GC marks.
RUBY_DATA_FUNC | dfree
| This function is called when the object is no longer used.
void * | data
| Pointer to the actual C level struct that you want to wrap.

## Detailed Description

Deprecated

Old "untyped" user data. It has roughly the same usage as struct RTypedData, but lacked several features such as support for compaction GC. Use of this struct is not recommended any longer. If it is dead necessary, please inform the core devs about your usage.

Definition at line 124 of file rdata.h.

## Field Documentation

## ◆ basic

struct RBasic RData::basic

Basic part, including flags and class.

Definition at line 127 of file rdata.h.

## ◆ data

void* RData::data

Pointer to the actual C level struct that you want to wrap.

Definition at line 150 of file rdata.h.

## ◆ dfree

RUBY_DATA_FUNC RData::dfree

This function is called when the object is no longer used.

You need to do whatever necessary to avoid memory leaks.

Warning
  This is called during GC runs. Object allocations are impossible at that moment (that is why GC runs).

Definition at line 147 of file rdata.h.

## ◆ dmark

RUBY_DATA_FUNC RData::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.

See also
  rb_gc_mark()

Warning
  This is called during GC runs. Object allocations are impossible at that moment (that is why GC runs).

Definition at line 138 of file rdata.h.

The documentation for this struct was generated from the following file:

- include/ruby/internal/core/rdata.h