1#ifndef RUBY_IO_BUFFER_T
2#define RUBY_IO_BUFFER_T 1
17#include "ruby/internal/config.h"
22#define RB_IO_BUFFER_EXPERIMENTAL 1
28enum rb_io_buffer_flags {
31 RB_IO_BUFFER_EXTERNAL = 1,
33 RB_IO_BUFFER_INTERNAL = 2,
36 RB_IO_BUFFER_MAPPED = 4,
41 RB_IO_BUFFER_LOCKED = 32,
44 RB_IO_BUFFER_PRIVATE = 64,
47 RB_IO_BUFFER_READONLY = 128
50enum rb_io_buffer_endian {
51 RB_IO_BUFFER_LITTLE_ENDIAN = 4,
52 RB_IO_BUFFER_BIG_ENDIAN = 8,
54#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
55 RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_LITTLE_ENDIAN,
56#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
57 RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN,
58#elif REG_DWORD == REG_DWORD_LITTLE_ENDIAN
59 RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_LITTLE_ENDIAN,
60#elif REG_DWORD == REG_DWORD_BIG_ENDIAN
61 RB_IO_BUFFER_HOST_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN,
64 RB_IO_BUFFER_NETWORK_ENDIAN = RB_IO_BUFFER_BIG_ENDIAN
67VALUE rb_io_buffer_new(
void *base,
size_t size,
enum rb_io_buffer_flags flags);
68VALUE rb_io_buffer_map(VALUE io,
size_t size, off_t offset,
enum rb_io_buffer_flags flags);
70VALUE rb_io_buffer_lock(VALUE
self);
71VALUE rb_io_buffer_unlock(VALUE
self);
72int rb_io_buffer_try_unlock(VALUE
self);
73VALUE rb_io_buffer_free(VALUE
self);
75int rb_io_buffer_get_bytes(VALUE
self,
void **base,
size_t *size);
76void rb_io_buffer_get_bytes_for_reading(VALUE
self,
const void **base,
size_t *size);
77void rb_io_buffer_get_bytes_for_writing(VALUE
self,
void **base,
size_t *size);
79VALUE rb_io_buffer_transfer(VALUE
self);
80void rb_io_buffer_resize(VALUE
self,
size_t size);
81void rb_io_buffer_clear(VALUE
self, uint8_t value,
size_t offset,
size_t length);
84VALUE rb_io_buffer_read(VALUE
self, VALUE io,
size_t length);
85VALUE rb_io_buffer_pread(VALUE
self, VALUE io,
size_t length, off_t offset);
86VALUE rb_io_buffer_write(VALUE
self, VALUE io,
size_t length);
87VALUE rb_io_buffer_pwrite(VALUE
self, VALUE io,
size_t length, off_t offset);
#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" {.