Ruby 2.7.0p0(2019-12-25revision647ee6f091eafcce70ffb75ddf7e121e192ab217)

Data Structures | Macros | Functions | Variables
function.c File Reference
`#include <fiddle.h>`
`#include <ruby/thread.h>`

Go to the source code of this file.

## Data Structures
struct | nogvl_ffi_call_args

## Macros
#define | RB_OBJ_CLASSNAME(obj) rb_obj_class(obj)
#define | RB_OBJ_STRING(obj) (obj)
#define | MAX_ARGS (SIZE_MAX / (sizeof(void *) + sizeof(fiddle_generic)) - 1)
#define | Check_Max_Args(name, len) Check_Max_Args_(name, len, "")
#define | Check_Max_Args_Long(name, len) Check_Max_Args_(name, len, "l")
#define | Check_Max_Args_(name, len, fmt)

## Functions
VALUE | rb_fiddle_new_function (VALUE address, VALUE arg_types, VALUE ret_type)
void | Init_fiddle_function (void)

## Variables
VALUE | cFiddleFunction
const rb_data_type_t | function_data_type

## Macro Definition Documentation

## ◆ Check_Max_Args

#define Check_Max_Args | ( |  | name,
|  |  | len
| ) |  | Check_Max_Args_(name, len, "")

Definition at line 17 of file function.c.

## ◆ Check_Max_Args_

#define Check_Max_Args_ | ( |  | name,
|  |  | len,
|  |  | fmt
| ) |  |

Value:
if ((size_t)(len) < MAX_ARGS) { \
/* OK */ \
} \
else { \
rb_raise(rb_eTypeError, \
name" is so large that it can cause integer overflow (%"fmt"d)", \
(len)); \
}

Definition at line 21 of file function.c.

## ◆ Check_Max_Args_Long

#define Check_Max_Args_Long | ( |  | name,
|  |  | len
| ) |  | Check_Max_Args_(name, len, "l")

Definition at line 19 of file function.c.

## ◆ MAX_ARGS

#define MAX_ARGS (SIZE_MAX / (sizeof(void *) + sizeof(fiddle_generic)) - 1)

Definition at line 15 of file function.c.

## ◆ RB_OBJ_CLASSNAME

#define RB_OBJ_CLASSNAME | ( |  | obj | ) | rb_obj_class(obj)

Definition at line 5 of file function.c.

## ◆ RB_OBJ_STRING

#define RB_OBJ_STRING | ( |  | obj | ) | (obj)

Definition at line 6 of file function.c.

## Function Documentation

## ◆ Init_fiddle_function()

void Init_fiddle_function | ( | void |  | ) |

Definition at line 225 of file function.c.

References cFiddleFunction, FFI_DEFAULT_ABI, FFI_STDCALL, INT2NUM, mFiddle, rb_cObject, rb_define_alloc_func(), rb_define_class_under(), and rb_define_const().

## ◆ rb_fiddle_new_function()

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

Definition at line 67 of file function.c.

References argv, cFiddleFunction, and rb_class_new_instance().

## Variable Documentation

## ◆ cFiddleFunction

VALUE cFiddleFunction

Definition at line 13 of file function.c.

Referenced by Init_fiddle_function(), and rb_fiddle_new_function().

## ◆ function_data_type

const rb_data_type_t function_data_type

Initial value:
= {
"fiddle/function",
{0, deallocate, function_memsize,},
}

Definition at line 53 of file function.c.

rb_eTypeError
VALUE rb_eTypeError
Definition: error.c:922
fmt
const VALUE int int int int int int VALUE char * fmt
Definition: rb_mjit_min_header-2.7.0.h:6462
MAX_ARGS
#define MAX_ARGS
Definition: function.c:15
len
uint8_t len
Definition: escape.c:17
name
const char * name
Definition: nkf.c:208