Ruby  3.3.0dev (2023-06-01 revision 957b6a491fe6a9a2df467f83a37e7c34861f995c)
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. More...
 
FILEstdio_file
 stdio ptr for read/write, if available. More...
 
int fd
 file descriptor. More...
 
int mode
 mode flags: FMODE_XXXs More...
 
rb_pid_t pid
 child's pid (for pipes) More...
 
int lineno
 number of lines read More...
 
VALUE pathv
 pathname for file More...
 
void(* finalize )(struct rb_io_t *, int)
 finalize proc More...
 
rb_io_buffer_t wbuf
 Write buffer. More...
 
rb_io_buffer_t rbuf
 (Byte) read buffer. More...
 
VALUE tied_io_for_writing
 Duplex IO object, if set. More...
 
struct rb_io_enc_t encs
 Decomposed encoding flags. More...
 
rb_econv_treadconv
 Encoding converter used when reading from this IO. More...
 
rb_io_buffer_t cbuf
 rb_io_ungetc() destination. More...
 
rb_econv_twriteconv
 Encoding converter used when writing to this IO. More...
 
VALUE writeconv_asciicompat
 This is, when set, an instance of rb_cString which holds the "common" encoding. More...
 
int writeconv_initialized
 Whether rb_io_t::writeconv is already set up. More...
 
int writeconv_pre_ecflags
 Value of ::rb_io_t::rb_io_enc_t::ecflags stored right before initialising rb_io_t::writeconv. More...
 
VALUE writeconv_pre_ecopts
 Value of ::rb_io_t::rb_io_enc_t::ecopts stored right before initialising rb_io_t::writeconv. More...
 
VALUE write_lock
 This is a Ruby level mutex. More...
 
VALUE timeout
 The timeout associated with this IO when performing blocking operations. More...
 

Detailed Description

Ruby's IO, metadata and buffers.

Definition at line 139 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 190 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 179 of file io.h.

Referenced by rb_io_open_descriptor().

◆ fd

int rb_io_t::fd

◆ finalize

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

finalize proc

Definition at line 163 of file io.h.

◆ lineno

int rb_io_t::lineno

number of lines read

Definition at line 157 of file io.h.

◆ mode

int rb_io_t::mode

◆ pathv

VALUE rb_io_t::pathv

pathname for file

Definition at line 160 of file io.h.

Referenced by rb_file_size(), rb_io_open_descriptor(), rb_io_path(), and rb_io_set_nonblock().

◆ pid

rb_pid_t rb_io_t::pid

child's pid (for pipes)

Definition at line 154 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 172 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 184 of file io.h.

Referenced by rb_io_binmode().

◆ self

VALUE rb_io_t::self

The IO's Ruby level counterpart.

Definition at line 142 of file io.h.

Referenced by rb_io_open_descriptor(), and rb_io_read_check().

◆ stdio_file

FILE* rb_io_t::stdio_file

stdio ptr for read/write, if available.

Definition at line 145 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 179 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 230 of file io.h.

Referenced by rb_io_open_descriptor(), 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 166 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 225 of file io.h.

◆ writeconv

rb_econv_t* rb_io_t::writeconv

Encoding converter used when writing to this IO.

Definition at line 193 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 201 of file io.h.

◆ writeconv_initialized

int rb_io_t::writeconv_initialized

Whether rb_io_t::writeconv is already set up.

Definition at line 204 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 210 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 216 of file io.h.


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