Ruby  3.1.0dev(2021-09-10revisionb76ad15ed0da636161de0243c547ee1e6fc95681)
Macros | Enumerations | Functions | Variables
memory_view.c File Reference

(b76ad15ed0da636161de0243c547ee1e6fc95681)

#include "internal.h"
#include "internal/hash.h"
#include "internal/variable.h"
#include "ruby/memory_view.h"
#include "ruby/util.h"
#include "vm_sync.h"
Include dependency graph for memory_view.c:

Go to the source code of this file.

Macros

#define INTPTR2NUM   LL2NUM
 
#define UINTPTR2NUM   ULL2NUM
 
#define STRUCT_ALIGNOF(T, result)
 

Enumerations

enum  endianness_t { ENDIANNESS_NATIVE, ENDIANNESS_LITTLE, ENDIANNESS_BIG }
 

Functions

bool rb_memory_view_register (VALUE klass, const rb_memory_view_entry_t *entry)
 
bool rb_memory_view_is_row_major_contiguous (const rb_memory_view_t *view)
 
bool rb_memory_view_is_column_major_contiguous (const rb_memory_view_t *view)
 
void rb_memory_view_fill_contiguous_strides (const ssize_t ndim, const ssize_t item_size, const ssize_t *const shape, const bool row_major_p, ssize_t *const strides)
 
bool rb_memory_view_init_as_byte_array (rb_memory_view_t *view, VALUE obj, void *data, const ssize_t len, const bool readonly)
 
ssize_t rb_memory_view_parse_item_format (const char *format, rb_memory_view_item_component_t **members, size_t *n_members, const char **err)
 
ssize_t rb_memory_view_item_size_from_format (const char *format, const char **err)
 
void * rb_memory_view_get_item_pointer (rb_memory_view_t *view, const ssize_t *indices)
 
VALUE rb_memory_view_extract_item_member (const void *ptr, const rb_memory_view_item_component_t *member, const size_t i)
 
VALUE rb_memory_view_extract_item_members (const void *ptr, const rb_memory_view_item_component_t *members, const size_t n_members)
 
void rb_memory_view_prepare_item_desc (rb_memory_view_t *view)
 
VALUE rb_memory_view_get_item (rb_memory_view_t *view, const ssize_t *indices)
 
bool rb_memory_view_available_p (VALUE obj)
 
bool rb_memory_view_get (VALUE obj, rb_memory_view_t *view, int flags)
 
bool rb_memory_view_release (rb_memory_view_t *view)
 
void Init_MemoryView (void)
 

Variables

VALUE rb_memory_view_exported_object_registry = Qundef
 
const rb_data_type_t rb_memory_view_exported_object_registry_data_type
 

Macro Definition Documentation

◆ INTPTR2NUM

#define INTPTR2NUM   LL2NUM

Definition at line 17 of file memory_view.c.

◆ STRUCT_ALIGNOF

#define STRUCT_ALIGNOF (   T,
  result 
)
Value:
do { \
(result) = RUBY_ALIGNOF(T); \
} while(0)

Definition at line 28 of file memory_view.c.

◆ UINTPTR2NUM

#define UINTPTR2NUM   ULL2NUM

Definition at line 18 of file memory_view.c.

Enumeration Type Documentation

◆ endianness_t

Enumerator
ENDIANNESS_NATIVE 
ENDIANNESS_LITTLE 
ENDIANNESS_BIG 

Definition at line 225 of file memory_view.c.

Function Documentation

◆ Init_MemoryView()

void Init_MemoryView ( void  )

Definition at line 858 of file memory_view.c.

◆ rb_memory_view_available_p()

bool rb_memory_view_available_p ( VALUE  obj)

Definition at line 802 of file memory_view.c.

References CLASS_OF.

◆ rb_memory_view_extract_item_member()

VALUE rb_memory_view_extract_item_member ( const void *  ptr,
const rb_memory_view_item_component_t member,
const size_t  i 
)

Definition at line 713 of file memory_view.c.

References NULL, ptr, Qnil, and rb_memory_view_item_component_t::repeat.

Referenced by rb_memory_view_extract_item_members().

◆ rb_memory_view_extract_item_members()

VALUE rb_memory_view_extract_item_members ( const void *  ptr,
const rb_memory_view_item_component_t members,
const size_t  n_members 
)

◆ rb_memory_view_fill_contiguous_strides()

void rb_memory_view_fill_contiguous_strides ( const ssize_t  ndim,
const ssize_t  item_size,
const ssize_t *const  shape,
const bool  row_major_p,
ssize_t *const  strides 
)

Definition at line 180 of file memory_view.c.

◆ rb_memory_view_get()

bool rb_memory_view_get ( VALUE  obj,
rb_memory_view_t view,
int  flags 
)

Definition at line 814 of file memory_view.c.

References CLASS_OF.

◆ rb_memory_view_get_item()

VALUE rb_memory_view_get_item ( rb_memory_view_t view,
const ssize_t *  indices 
)

◆ rb_memory_view_get_item_pointer()

void* rb_memory_view_get_item_pointer ( rb_memory_view_t view,
const ssize_t *  indices 
)

◆ rb_memory_view_init_as_byte_array()

bool rb_memory_view_init_as_byte_array ( rb_memory_view_t view,
VALUE  obj,
void *  data,
const ssize_t  len,
const bool  readonly 
)

◆ rb_memory_view_is_column_major_contiguous()

bool rb_memory_view_is_column_major_contiguous ( const rb_memory_view_t view)

◆ rb_memory_view_is_row_major_contiguous()

bool rb_memory_view_is_row_major_contiguous ( const rb_memory_view_t view)

◆ rb_memory_view_item_size_from_format()

ssize_t rb_memory_view_item_size_from_format ( const char *  format,
const char **  err 
)

Definition at line 505 of file memory_view.c.

References err, NULL, and rb_memory_view_parse_item_format().

◆ rb_memory_view_parse_item_format()

ssize_t rb_memory_view_parse_item_format ( const char *  format,
rb_memory_view_item_component_t **  members,
size_t *  n_members,
const char **  err 
)

◆ rb_memory_view_prepare_item_desc()

void rb_memory_view_prepare_item_desc ( rb_memory_view_t view)

◆ rb_memory_view_register()

bool rb_memory_view_register ( VALUE  klass,
const rb_memory_view_entry_t entry 
)

Definition at line 131 of file memory_view.c.

◆ rb_memory_view_release()

bool rb_memory_view_release ( rb_memory_view_t view)

Definition at line 835 of file memory_view.c.

References CLASS_OF, and rb_memory_view_t::obj.

Variable Documentation

◆ rb_memory_view_exported_object_registry

VALUE rb_memory_view_exported_object_registry = Qundef

Definition at line 35 of file memory_view.c.

◆ rb_memory_view_exported_object_registry_data_type

const rb_data_type_t rb_memory_view_exported_object_registry_data_type
Initial value:
= {
"memory_view/exported_object_registry",
{
exported_object_registry_mark,
exported_object_registry_free,
0,
},
}

Definition at line 61 of file memory_view.c.

RUBY_TYPED_FREE_IMMEDIATELY
@ RUBY_TYPED_FREE_IMMEDIATELY
Definition: rtypeddata.h:62
RUBY_ALIGNOF
#define RUBY_ALIGNOF
Definition: stdalign.h:28