Ruby
3.4.0dev (2024-11-05 revision 348a53415339076afc4a02fcd09f3ae36e9c4c61)
|
Ruby's IO, metadata and buffers. More...
#include <io.h>
Data Fields | |
VALUE | self |
The IO's Ruby level counterpart. More... | |
FILE * | stdio_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_t * | readconv |
Encoding converter used when reading from this IO. More... | |
rb_io_buffer_t | cbuf |
rb_io_ungetc() destination. More... | |
rb_econv_t * | writeconv |
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... | |
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().
struct rb_io_encoding rb_io::encs |
Decomposed encoding flags.
Definition at line 193 of file io.h.
Referenced by rb_io_open_descriptor().
int rb_io::fd |
file descriptor.
Definition at line 154 of file io.h.
Referenced by rb_file_size(), rb_io_binmode(), rb_io_check_closed(), rb_io_closed_p(), rb_io_descriptor(), rb_io_eof(), rb_io_getbyte(), rb_io_open_descriptor(), rb_io_set_nonblock(), rb_io_stdio_file(), and rb_io_wait().
int rb_io::mode |
mode flags: FMODE_XXXs
Definition at line 158 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_mode(), rb_io_open_descriptor(), rb_io_stdio_file(), and rb_io_synchronized().
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().
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().
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().
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().
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().
VALUE rb_io::tied_io_for_writing |
Duplex IO object, if set.
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().
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().
rb_io_buffer_t rb_io::wbuf |
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.
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().
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.
int rb_io::writeconv_initialized |
Whether rb_io_t::writeconv is already set up.
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().
VALUE rb_io::writeconv_pre_ecopts |
Value of ::rb_io_t::rb_io_enc_t::ecopts stored right before initialising rb_io_t::writeconv.