Ruby  3.4.0dev (2024-11-22 revision 0989400a925cd201defdca9eb28eb87200b30785)
Data Fields
rb_io 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 *, 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_encoding 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 143 of file io.h.

Field Documentation

◆ cbuf

rb_io_buffer_t rb_io::cbuf

rb_io_ungetc() destination.

This buffer is read before checking rb_io_t::rbuf

Definition at line 207 of file io.h.

Referenced by rb_io_ungetc().

◆ encs

struct rb_io_encoding rb_io::encs

Decomposed encoding flags.

Definition at line 193 of file io.h.

Referenced by rb_io_open_descriptor().

◆ fd

int rb_io::fd

◆ finalize

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

finalize proc

Definition at line 174 of file io.h.

◆ lineno

int rb_io::lineno

number of lines read

Definition at line 166 of file io.h.

◆ mode

int rb_io::mode

◆ pathv

VALUE rb_io::pathv

pathname for file

Definition at line 170 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::pid

child's pid (for pipes)

Definition at line 162 of file io.h.

◆ rbuf

rb_io_buffer_t rb_io::rbuf

(Byte) read buffer.

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

Definition at line 185 of file io.h.

Referenced by rb_io_check_writable(), and rb_io_getbyte().

◆ readconv

rb_econv_t * rb_io::readconv

Encoding converter used when reading from this IO.

Definition at line 200 of file io.h.

Referenced by rb_io_binmode().

◆ self

VALUE rb_io::self

The IO's Ruby level counterpart.

Definition at line 146 of file io.h.

Referenced by rb_io_open_descriptor(), and rb_io_read_check().

◆ stdio_file

FILE * rb_io::stdio_file

stdio ptr for read/write, if available.

Definition at line 150 of file io.h.

Referenced by rb_io_stdio_file().

◆ tied_io_for_writing

VALUE rb_io::tied_io_for_writing

Duplex IO object, if set.

See also
rb_io_set_write_io()

Definition at line 193 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::timeout

The timeout associated with this IO when performing blocking operations.

Definition at line 254 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::wbuf

Write buffer.

Definition at line 178 of file io.h.

Referenced by rb_io_check_char_readable().

◆ write_lock

VALUE rb_io::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 248 of file io.h.

◆ writeconv

rb_econv_t * rb_io::writeconv

Encoding converter used when writing to this IO.

Definition at line 211 of file io.h.

Referenced by rb_io_binmode().

◆ writeconv_asciicompat

VALUE rb_io::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 220 of file io.h.

◆ writeconv_initialized

int rb_io::writeconv_initialized

Whether rb_io_t::writeconv is already set up.

Definition at line 224 of file io.h.

◆ writeconv_pre_ecflags

int rb_io::writeconv_pre_ecflags

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

Definition at line 231 of file io.h.

Referenced by rb_io_binmode().

◆ writeconv_pre_ecopts

VALUE rb_io::writeconv_pre_ecopts

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

Definition at line 238 of file io.h.


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