1#ifndef RUBY_IO_BUFFER_H
2#define RUBY_IO_BUFFER_H
17#include "ruby/internal/config.h"
22#define RB_IO_BUFFER_EXPERIMENTAL 1
27#define RUBY_IO_BUFFER_VERSION 4
36int rb_io_buffer_p(
VALUE self);
40int rb_io_buffer_readonly_p(
VALUE self);
54enum rb_io_buffer_flags {
57 RB_IO_BUFFER_EXTERNAL = 1,
59 RB_IO_BUFFER_INTERNAL = 2,
62 RB_IO_BUFFER_MAPPED = 4,
65 RB_IO_BUFFER_SHARED = 8,
68 RB_IO_BUFFER_PRIVATE = 64,
71 RB_IO_BUFFER_READONLY = 128,
74 RB_IO_BUFFER_FILE = 256,
78enum rb_io_buffer_endian {
80 RB_IO_BUFFER_LITTLE_ENDIAN = 4,
81 RB_IO_BUFFER_BIG_ENDIAN = 8,
83#if defined(WORDS_BIGENDIAN)
84 RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN,
86 RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_LITTLE_ENDIAN,
89 RB_IO_BUFFER_NETWORK_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN
92VALUE rb_io_buffer_new(
void *base,
size_t size,
enum rb_io_buffer_flags flags);
96VALUE rb_io_buffer_new_locked(
void *base,
size_t size,
enum rb_io_buffer_flags flags);
97VALUE rb_io_buffer_map(
VALUE io,
size_t size, rb_off_t offset,
enum rb_io_buffer_flags flags);
103int rb_io_buffer_try_unlock(
VALUE self);
117enum rb_io_buffer_flags rb_io_buffer_get_bytes(
VALUE self,
void **base,
size_t *size);
118void rb_io_buffer_get_bytes_for_reading(
VALUE self,
const void **base,
size_t *size);
119void rb_io_buffer_get_bytes_for_writing(
VALUE self,
void **base,
size_t *size);
125VALUE rb_io_buffer_locked_for_reading(
VALUE self,
VALUE (*callback)(
const void *base,
size_t size,
VALUE argument),
VALUE argument);
131VALUE rb_io_buffer_locked_for_writing(
VALUE self,
VALUE (*callback)(
void *base,
size_t size,
VALUE argument),
VALUE argument);
134void rb_io_buffer_resize(
VALUE self,
size_t size);
136void rb_io_buffer_advance(
VALUE self,
size_t amount);
137void rb_io_buffer_clear(
VALUE self, uint8_t value,
size_t offset,
size_t length);
141VALUE rb_io_buffer_read(
VALUE self,
VALUE io,
size_t offset,
size_t length);
142VALUE rb_io_buffer_pread(
VALUE self,
VALUE io, rb_off_t from,
size_t offset,
size_t length);
143VALUE rb_io_buffer_write(
VALUE self,
VALUE io,
size_t offset,
size_t length);
144VALUE rb_io_buffer_pwrite(
VALUE self,
VALUE io, rb_off_t from,
size_t offset,
size_t length);
#define RUBY_EXTERN
Declaration of externally visible global variables.
#define RBIMPL_SYMBOL_EXPORT_END()
Counterpart of RBIMPL_SYMBOL_EXPORT_BEGIN.
#define RBIMPL_SYMBOL_EXPORT_BEGIN()
Shortcut macro equivalent to RUBY_SYMBOL_EXPORT_BEGIN extern "C" {.
uintptr_t VALUE
Type that represents a Ruby object.