3 #ifdef HAVE_RUBY_MEMORY_VIEW_H
10 #if SIZEOF_INTPTR_T == SIZEOF_LONG_LONG
11 # define INTPTR2NUM LL2NUM
12 # define UINTPTR2NUM ULL2NUM
13 #elif SIZEOF_INTPTR_T == SIZEOF_LONG
14 # define INTPTR2NUM LONG2NUM
15 # define UINTPTR2NUM ULONG2NUM
17 # define INTPTR2NUM INT2NUM
18 # define UINTPTR2NUM UINT2NUM
30 fiddle_memview_mark(
void *
ptr)
52 fiddle_memview_free(
void *
ptr)
55 fiddle_memview_release(data);
60 fiddle_memview_memsize(
const void *
ptr)
68 {fiddle_memview_mark, fiddle_memview_free, fiddle_memview_memsize,},
72 rb_fiddle_memview_s_allocate(
VALUE klass)
84 rb_fiddle_memview_release(
VALUE obj)
90 fiddle_memview_release(data);
95 rb_fiddle_memview_s_export(
VALUE klass,
VALUE target)
104 rb_fiddle_memview_initialize(
VALUE obj,
VALUE target)
118 rb_fiddle_memview_get_obj(
VALUE obj)
127 rb_fiddle_memview_get_byte_size(
VALUE obj)
137 rb_fiddle_memview_get_readonly(
VALUE obj)
147 rb_fiddle_memview_get_format(
VALUE obj)
157 rb_fiddle_memview_get_item_size(
VALUE obj)
167 rb_fiddle_memview_get_ndim(
VALUE obj)
177 rb_fiddle_memview_get_shape(
VALUE obj)
185 const ssize_t ndim = data->
view.
ndim;
188 for (i = 0; i < ndim; ++i) {
195 rb_fiddle_memview_get_strides(
VALUE obj)
203 const ssize_t ndim = data->
view.
ndim;
206 for (i = 0; i < ndim; ++i) {
213 rb_fiddle_memview_get_sub_offsets(
VALUE obj)
221 const ssize_t ndim = data->
view.
ndim;
224 for (i = 0; i < ndim; ++i) {
238 const ssize_t ndim = data->
view.
ndim;
244 ssize_t *indices =
ALLOCV_N(ssize_t, indices_v, ndim);
247 for (i = 0; i < ndim; ++i) {
271 rb_fiddle_memview_to_s(
VALUE self)
274 const char *raw_data;
280 &fiddle_memview_data_type,
294 CONST_ID(id_memory_view,
"memory_view");