Ruby  3.1.0dev(2021-09-10revisionb76ad15ed0da636161de0243c547ee1e6fc95681)
Macros | Typedefs | Functions | Variables
fiddle.h File Reference

(b76ad15ed0da636161de0243c547ee1e6fc95681)

#include <ruby.h>
#include <errno.h>
#include <ffi.h>
#include <closure.h>
#include <conversions.h>
#include <function.h>
Include dependency graph for fiddle.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define ffi_type_uchar   ffi_type_uint8
 
#define ffi_type_schar   ffi_type_sint8
 
#define TYPE_VOID   0
 
#define TYPE_VOIDP   1
 
#define TYPE_CHAR   2
 
#define TYPE_SHORT   3
 
#define TYPE_INT   4
 
#define TYPE_LONG   5
 
#define TYPE_FLOAT   7
 
#define TYPE_DOUBLE   8
 
#define TYPE_VARIADIC   9
 
#define TYPE_CONST_STRING   10
 
#define TYPE_INT8_T   TYPE_CHAR
 
#define TYPE_SSIZE_T   TYPE_INT
 
#define TYPE_SIZE_T   (-1*SIGNEDNESS_OF_SIZE_T*TYPE_SSIZE_T)
 
#define TYPE_PTRDIFF_T   TYPE_INT
 
#define TYPE_INTPTR_T   TYPE_INT
 
#define TYPE_UINTPTR_T   (-TYPE_INTPTR_T)
 
#define ALIGN_OF(type)   offsetof(struct {char align_c; type align_x;}, align_x)
 
#define ALIGN_VOIDP   ALIGN_OF(void*)
 
#define ALIGN_CHAR   ALIGN_OF(char)
 
#define ALIGN_SHORT   ALIGN_OF(short)
 
#define ALIGN_INT   ALIGN_OF(int)
 
#define ALIGN_LONG   ALIGN_OF(long)
 
#define ALIGN_FLOAT   ALIGN_OF(float)
 
#define ALIGN_DOUBLE   ALIGN_OF(double)
 
#define ALIGN_INT8_T   ALIGN_OF(int8_t)
 
#define ALIGN_INT16_T   ALIGN_OF(int16_t)
 
#define ALIGN_INT32_T   ALIGN_OF(int32_t)
 
#define ALIGN_INT64_T   ALIGN_OF(int64_t)
 

Typedefs

typedef void(* rb_fiddle_freefunc_t) (void *)
 

Functions

VALUE rb_fiddle_new_function (VALUE address, VALUE arg_types, VALUE ret_type)
 
VALUE rb_fiddle_ptr_new_wrap (void *ptr, long size, rb_fiddle_freefunc_t func, VALUE wrap0, VALUE wrap1)
 

Variables

VALUE mFiddle
 
VALUE rb_eFiddleDLError
 

Macro Definition Documentation

◆ ALIGN_CHAR

#define ALIGN_CHAR   ALIGN_OF(char)

Definition at line 181 of file fiddle.h.

◆ ALIGN_DOUBLE

#define ALIGN_DOUBLE   ALIGN_OF(double)

Definition at line 189 of file fiddle.h.

◆ ALIGN_FLOAT

#define ALIGN_FLOAT   ALIGN_OF(float)

Definition at line 188 of file fiddle.h.

◆ ALIGN_INT

#define ALIGN_INT   ALIGN_OF(int)

Definition at line 183 of file fiddle.h.

◆ ALIGN_INT16_T

#define ALIGN_INT16_T   ALIGN_OF(int16_t)

Definition at line 192 of file fiddle.h.

◆ ALIGN_INT32_T

#define ALIGN_INT32_T   ALIGN_OF(int32_t)

Definition at line 193 of file fiddle.h.

◆ ALIGN_INT64_T

#define ALIGN_INT64_T   ALIGN_OF(int64_t)

Definition at line 194 of file fiddle.h.

◆ ALIGN_INT8_T

#define ALIGN_INT8_T   ALIGN_OF(int8_t)

Definition at line 191 of file fiddle.h.

◆ ALIGN_LONG

#define ALIGN_LONG   ALIGN_OF(long)

Definition at line 184 of file fiddle.h.

◆ ALIGN_OF

#define ALIGN_OF (   type)    offsetof(struct {char align_c; type align_x;}, align_x)

Definition at line 178 of file fiddle.h.

◆ ALIGN_SHORT

#define ALIGN_SHORT   ALIGN_OF(short)

Definition at line 182 of file fiddle.h.

◆ ALIGN_VOIDP

#define ALIGN_VOIDP   ALIGN_OF(void*)

Definition at line 180 of file fiddle.h.

◆ ffi_type_schar

#define ffi_type_schar   ffi_type_sint8

Definition at line 60 of file fiddle.h.

◆ ffi_type_uchar

#define ffi_type_uchar   ffi_type_uint8

Definition at line 59 of file fiddle.h.

◆ TYPE_CHAR

#define TYPE_CHAR   2

Definition at line 113 of file fiddle.h.

◆ TYPE_CONST_STRING

#define TYPE_CONST_STRING   10

Definition at line 123 of file fiddle.h.

◆ TYPE_DOUBLE

#define TYPE_DOUBLE   8

Definition at line 121 of file fiddle.h.

◆ TYPE_FLOAT

#define TYPE_FLOAT   7

Definition at line 120 of file fiddle.h.

◆ TYPE_INT

#define TYPE_INT   4

Definition at line 115 of file fiddle.h.

◆ TYPE_INT8_T

#define TYPE_INT8_T   TYPE_CHAR

Definition at line 125 of file fiddle.h.

◆ TYPE_INTPTR_T

#define TYPE_INTPTR_T   TYPE_INT

Definition at line 169 of file fiddle.h.

◆ TYPE_LONG

#define TYPE_LONG   5

Definition at line 116 of file fiddle.h.

◆ TYPE_PTRDIFF_T

#define TYPE_PTRDIFF_T   TYPE_INT

Definition at line 159 of file fiddle.h.

◆ TYPE_SHORT

#define TYPE_SHORT   3

Definition at line 114 of file fiddle.h.

◆ TYPE_SIZE_T

#define TYPE_SIZE_T   (-1*SIGNEDNESS_OF_SIZE_T*TYPE_SSIZE_T)

Definition at line 155 of file fiddle.h.

◆ TYPE_SSIZE_T

#define TYPE_SSIZE_T   TYPE_INT

Definition at line 148 of file fiddle.h.

◆ TYPE_UINTPTR_T

#define TYPE_UINTPTR_T   (-TYPE_INTPTR_T)

Definition at line 176 of file fiddle.h.

◆ TYPE_VARIADIC

#define TYPE_VARIADIC   9

Definition at line 122 of file fiddle.h.

◆ TYPE_VOID

#define TYPE_VOID   0

Definition at line 111 of file fiddle.h.

◆ TYPE_VOIDP

#define TYPE_VOIDP   1

Definition at line 112 of file fiddle.h.

Typedef Documentation

◆ rb_fiddle_freefunc_t

typedef void(* rb_fiddle_freefunc_t) (void *)

Definition at line 201 of file fiddle.h.

Function Documentation

◆ rb_fiddle_new_function()

VALUE rb_fiddle_new_function ( VALUE  address,
VALUE  arg_types,
VALUE  ret_type 
)

Definition at line 69 of file function.c.

References argv, cFiddleFunction, and rb_class_new_instance().

◆ rb_fiddle_ptr_new_wrap()

VALUE rb_fiddle_ptr_new_wrap ( void *  ptr,
long  size,
rb_fiddle_freefunc_t  func,
VALUE  wrap0,
VALUE  wrap1 
)

Definition at line 145 of file pointer.c.

Variable Documentation

◆ mFiddle

VALUE mFiddle

◆ rb_eFiddleDLError

VALUE rb_eFiddleDLError

Definition at line 4 of file fiddle.c.

Referenced by Init_fiddle().