Ruby: rb_io_t Struct Reference

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

Data Fields
rb_io_t Struct Reference

Ruby's IO, metadata and buffers. More...

`#include <io.h>`

## Data Fields
VALUE | self
| The IO's Ruby level counterpart.
FILE * | stdio_file
| stdio ptr for read/write, if available.
int | fd
| file descriptor.
int | mode
| mode flags: FMODE_XXXs
rb_pid_t | pid
| child's pid (for pipes)
int | lineno
| number of lines read
VALUE | pathv
| pathname for file
void(* | finalize )(struct rb_io_t *, int)
| finalize proc
rb_io_buffer_t | wbuf
| Write buffer.
rb_io_buffer_t | rbuf
| (Byte) read buffer.
VALUE | tied_io_for_writing
| Duplex IO object, if set.
struct rb_io_enc_t | encs
| Decomposed encoding flags.
rb_econv_t * | readconv
| Encoding converter used when reading from this IO.
rb_io_buffer_t | cbuf
| rb_io_ungetc() destination.
rb_econv_t * | writeconv
| Encoding converter used when writing to this IO.
VALUE | writeconv_asciicompat
| This is, when set, an instance of rb_cString which holds the "common" encoding.
int | writeconv_initialized
| Whether rb_io_t::writeconv is already set up.
int | writeconv_pre_ecflags
| Value of rb_io_t::rb_io_enc_t::ecflags stored right before initialising rb_io_t::writeconv.
VALUE | writeconv_pre_ecopts
| Value of rb_io_t::rb_io_enc_t::ecopts stored right before initialising rb_io_t::writeconv.
VALUE | write_lock
| This is a Ruby level mutex.
VALUE | timeout
| The timeout associated with this IO when performing blocking operations.

## Detailed Description

Ruby's IO, metadata and buffers.

Definition at line 138 of file io.h.

## Field Documentation

## ◆ cbuf

rb_io_buffer_t rb_io_t::cbuf

rb_io_ungetc() destination.

This buffer is read before checking rb_io_t::rbuf

Definition at line 189 of file io.h.

Referenced by rb_io_ungetc().

## ◆ encs

struct rb_io_enc_t rb_io_t::encs

Decomposed encoding flags.

Definition at line 180 of file io.h.

## ◆ fd

int rb_io_t::fd

file descriptor.

Definition at line 147 of file io.h.

Referenced by rb_file_size(), rb_io_binmode(), rb_io_check_closed(), rb_io_descriptor(), rb_io_eof(), rb_io_getbyte(), rb_io_set_nonblock(), rb_io_stdio_file(), and rb_io_wait().

## ◆ finalize

void(* rb_io_t::finalize) (struct rb_io_t *, int)

finalize proc

Definition at line 162 of file io.h.

## ◆ lineno

int rb_io_t::lineno

number of lines read

Definition at line 156 of file io.h.

## ◆ mode

int rb_io_t::mode

mode flags: FMODE_XXXs

Definition at line 150 of file io.h.

Referenced by rb_file_size(), rb_io_binmode(), rb_io_check_char_readable(), rb_io_check_writable(), rb_io_getbyte(), rb_io_stdio_file(), and rb_io_synchronized().

## ◆ pathv

VALUE rb_io_t::pathv

pathname for file

Definition at line 159 of file io.h.

Referenced by rb_file_size(), and rb_io_set_nonblock().

## ◆ pid

rb_pid_t rb_io_t::pid

child's pid (for pipes)

Definition at line 153 of file io.h.

## ◆ rbuf

rb_io_buffer_t rb_io_t::rbuf

(Byte) read buffer.

Note also that there is a field called rb_io_t::cbuf, which also concerns read IO.

Definition at line 171 of file io.h.

Referenced by rb_io_check_writable(), and rb_io_getbyte().

## ◆ readconv

rb_econv_t* rb_io_t::readconv

Encoding converter used when reading from this IO.

Definition at line 183 of file io.h.

Referenced by rb_io_binmode().

## ◆ self

VALUE rb_io_t::self

The IO's Ruby level counterpart.

Definition at line 141 of file io.h.

Referenced by rb_io_read_check().

## ◆ stdio_file

FILE* rb_io_t::stdio_file

stdio ptr for read/write, if available.

Definition at line 144 of file io.h.

Referenced by rb_io_stdio_file().

## ◆ tied_io_for_writing

VALUE rb_io_t::tied_io_for_writing

Duplex IO object, if set.

See also
  rb_io_set_write_io()

Definition at line 178 of file io.h.

Referenced by rb_io_check_char_readable(), rb_io_get_write_io(), and rb_io_set_write_io().

## ◆ timeout

VALUE rb_io_t::timeout

The timeout associated with this IO when performing blocking operations.

Definition at line 229 of file io.h.

Referenced by rb_io_set_timeout(), rb_io_timeout(), and rb_io_wait().

## ◆ wbuf

rb_io_buffer_t rb_io_t::wbuf

Write buffer.

Definition at line 165 of file io.h.

Referenced by rb_io_check_char_readable().

## ◆ write_lock

VALUE rb_io_t::write_lock

This is a Ruby level mutex.

It avoids multiple threads to write to an IO at once; helps for instance rb_io_puts() to ensure newlines right next to its arguments.

This of course doesn't help inter-process IO interleaves, though.

Definition at line 224 of file io.h.

## ◆ writeconv

rb_econv_t* rb_io_t::writeconv

Encoding converter used when writing to this IO.

Definition at line 192 of file io.h.

Referenced by rb_io_binmode().

## ◆ writeconv_asciicompat

VALUE rb_io_t::writeconv_asciicompat

This is, when set, an instance of rb_cString which holds the "common" encoding.

Write conversion can convert strings twice... In case conversion from encoding X to encoding Y does not exist, Ruby finds an encoding Z that bridges the two, so that X to Z to Y conversion happens.

Definition at line 200 of file io.h.

## ◆ writeconv_initialized

int rb_io_t::writeconv_initialized

Whether rb_io_t::writeconv is already set up.

Definition at line 203 of file io.h.

## ◆ writeconv_pre_ecflags

int rb_io_t::writeconv_pre_ecflags

Value of rb_io_t::rb_io_enc_t::ecflags stored right before initialising rb_io_t::writeconv.

Definition at line 209 of file io.h.

Referenced by rb_io_binmode().

## ◆ writeconv_pre_ecopts

VALUE rb_io_t::writeconv_pre_ecopts

Value of rb_io_t::rb_io_enc_t::ecopts stored right before initialising rb_io_t::writeconv.

Definition at line 215 of file io.h.

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

- include/ruby/io.h