#include <ruby/ruby.h>#include <ruby/io.h>#include <ctype.h>#include <fiddle.h>Go to the source code of this file.
Data Structures | |
| struct | ptr_data |
Defines | |
| #define | RB_OBJ_CLASSNAME(obj) rb_obj_class(obj) |
| #define | RB_OBJ_STRING(obj) (obj) |
| #define | RPTR_DATA(obj) ((struct ptr_data *)(DATA_PTR(obj))) |
Typedefs | |
| typedef void(* | freefunc_t )(void *) |
Functions | |
| static freefunc_t | get_freefunc (VALUE func, volatile VALUE *wrap) |
| static void | fiddle_ptr_mark (void *ptr) |
| static void | fiddle_ptr_free (void *ptr) |
| static size_t | fiddle_ptr_memsize (const void *ptr) |
| static VALUE | rb_fiddle_ptr_new2 (VALUE klass, void *ptr, long size, freefunc_t func) |
| static VALUE | rb_fiddle_ptr_new (void *ptr, long size, freefunc_t func) |
| static VALUE | rb_fiddle_ptr_malloc (long size, freefunc_t func) |
| static void * | rb_fiddle_ptr2cptr (VALUE val) |
| static VALUE | rb_fiddle_ptr_s_allocate (VALUE klass) |
| static VALUE | rb_fiddle_ptr_initialize (int argc, VALUE argv[], VALUE self) |
| static VALUE | rb_fiddle_ptr_s_malloc (int argc, VALUE argv[], VALUE klass) |
| static VALUE | rb_fiddle_ptr_to_i (VALUE self) |
| static VALUE | rb_fiddle_ptr_to_value (VALUE self) |
| static VALUE | rb_fiddle_ptr_ptr (VALUE self) |
| static VALUE | rb_fiddle_ptr_ref (VALUE self) |
| static VALUE | rb_fiddle_ptr_null_p (VALUE self) |
| static VALUE | rb_fiddle_ptr_free_set (VALUE self, VALUE val) |
| static VALUE | rb_fiddle_ptr_free_get (VALUE self) |
| static VALUE | rb_fiddle_ptr_to_s (int argc, VALUE argv[], VALUE self) |
| static VALUE | rb_fiddle_ptr_to_str (int argc, VALUE argv[], VALUE self) |
| static VALUE | rb_fiddle_ptr_inspect (VALUE self) |
| static VALUE | rb_fiddle_ptr_eql (VALUE self, VALUE other) |
| static VALUE | rb_fiddle_ptr_cmp (VALUE self, VALUE other) |
| static VALUE | rb_fiddle_ptr_plus (VALUE self, VALUE other) |
| static VALUE | rb_fiddle_ptr_minus (VALUE self, VALUE other) |
| static VALUE | rb_fiddle_ptr_aref (int argc, VALUE argv[], VALUE self) |
| static VALUE | rb_fiddle_ptr_aset (int argc, VALUE argv[], VALUE self) |
| static VALUE | rb_fiddle_ptr_size_set (VALUE self, VALUE size) |
| static VALUE | rb_fiddle_ptr_size_get (VALUE self) |
| static VALUE | rb_fiddle_ptr_s_to_ptr (VALUE self, VALUE val) |
| void | Init_fiddle_pointer (void) |
Variables | |
| VALUE | rb_cPointer |
| static ID | id_to_ptr |
| static const rb_data_type_t | fiddle_ptr_data_type |
| #define RPTR_DATA | ( | obj | ) | ((struct ptr_data *)(DATA_PTR(obj))) |
| typedef void(* freefunc_t)(void *) |
| static void fiddle_ptr_free | ( | void * | ptr | ) | [static] |
Definition at line 60 of file pointer.c.
References ptr_data::free, ptr_data::ptr, and xfree.
| static void fiddle_ptr_mark | ( | void * | ptr | ) | [static] |
Definition at line 48 of file pointer.c.
References rb_gc_mark(), and ptr_data::wrap.
| static size_t fiddle_ptr_memsize | ( | const void * | ptr | ) | [static] |
Definition at line 72 of file pointer.c.
References ptr_data::size.
| static freefunc_t get_freefunc | ( | VALUE | func, | |
| volatile VALUE * | wrap | |||
| ) | [inline, static] |
Definition at line 33 of file pointer.c.
References NIL_P, NULL, NUM2PTR, and rb_Integer().
Referenced by rb_fiddle_ptr_free_set(), rb_fiddle_ptr_initialize(), and rb_fiddle_ptr_s_malloc().
| void Init_fiddle_pointer | ( | void | ) |
Definition at line 681 of file pointer.c.
References id_to_ptr, mFiddle, rb_cObject, rb_cPointer, rb_define_alloc_func(), rb_define_class_under(), rb_define_const(), rb_define_method(), rb_define_singleton_method(), rb_fiddle_ptr_aref(), rb_fiddle_ptr_aset(), rb_fiddle_ptr_cmp(), rb_fiddle_ptr_eql(), rb_fiddle_ptr_free_get(), rb_fiddle_ptr_free_set(), rb_fiddle_ptr_initialize(), rb_fiddle_ptr_inspect(), rb_fiddle_ptr_minus(), rb_fiddle_ptr_new(), rb_fiddle_ptr_null_p(), rb_fiddle_ptr_plus(), rb_fiddle_ptr_ptr(), rb_fiddle_ptr_ref(), rb_fiddle_ptr_s_allocate(), rb_fiddle_ptr_s_malloc(), rb_fiddle_ptr_s_to_ptr(), rb_fiddle_ptr_size_get(), rb_fiddle_ptr_size_set(), rb_fiddle_ptr_to_i(), rb_fiddle_ptr_to_s(), rb_fiddle_ptr_to_str(), rb_fiddle_ptr_to_value(), and rb_intern.
Referenced by Init_fiddle().
| static void* rb_fiddle_ptr2cptr | ( | VALUE | val | ) | [static] |
Definition at line 117 of file pointer.c.
References fiddle_ptr_data_type, NULL, ptr_data::ptr, Qnil, rb_cPointer, rb_eTypeError, rb_obj_is_kind_of(), rb_raise(), and TypedData_Get_Struct.
Referenced by rb_fiddle_ptr_aset(), rb_fiddle_ptr_cmp(), rb_fiddle_ptr_eql(), rb_fiddle_ptr_minus(), and rb_fiddle_ptr_plus().
| static VALUE rb_fiddle_ptr_aref | ( | int | argc, | |
| VALUE | argv[], | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 540 of file pointer.c.
References fiddle_ptr_data_type, INT2NUM, NUM2ULONG, ptr_data::ptr, Qnil, rb_bug(), rb_eFiddleError, rb_raise(), rb_scan_args(), and TypedData_Get_Struct.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_aset | ( | int | argc, | |
| VALUE | argv[], | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 577 of file pointer.c.
References fiddle_ptr_data_type, NUM2PTR, NUM2UINT, NUM2ULONG, ptr_data::ptr, Qnil, rb_bug(), rb_cPointer, rb_eFiddleError, rb_fiddle_ptr2cptr(), rb_obj_is_kind_of(), rb_raise(), rb_scan_args(), RB_TYPE_P, StringValuePtr, T_STRING, and TypedData_Get_Struct.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_cmp | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 479 of file pointer.c.
References diff(), INT2FIX, INT2NUM, Qnil, rb_cPointer, rb_fiddle_ptr2cptr(), rb_obj_is_kind_of(), and SIGNED_VALUE.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_eql | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 458 of file pointer.c.
References Qfalse, Qtrue, rb_cPointer, rb_fiddle_ptr2cptr(), and rb_obj_is_kind_of().
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_free_get | ( | VALUE | self | ) | [static] |
Definition at line 337 of file pointer.c.
References fiddle_ptr_data_type, ptr_data::free, INT2NUM, PTR2NUM, Qnil, rb_ary_new(), rb_ary_push(), rb_fiddle_new_function(), TYPE_VOID, TYPE_VOIDP, and TypedData_Get_Struct.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_free_set | ( | VALUE | self, | |
| VALUE | val | |||
| ) | [static] |
Definition at line 317 of file pointer.c.
References fiddle_ptr_data_type, ptr_data::free, get_freefunc(), Qnil, TypedData_Get_Struct, and ptr_data::wrap.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_initialize | ( | int | argc, | |
| VALUE | argv[], | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 162 of file pointer.c.
References f, fiddle_ptr_data_type, ptr_data::free, get_freefunc(), NULL, NUM2LONG, NUM2PTR, ptr_data::ptr, Qnil, rb_Integer(), rb_scan_args(), ptr_data::size, size, sym, TypedData_Get_Struct, and ptr_data::wrap.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_inspect | ( | VALUE | self | ) | [static] |
Definition at line 440 of file pointer.c.
References fiddle_ptr_data_type, ptr_data::free, PRIsVALUE, ptr_data::ptr, RB_OBJ_CLASSNAME, rb_sprintf(), ptr_data::size, and TypedData_Get_Struct.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_malloc | ( | long | size, | |
| freefunc_t | func | |||
| ) | [static] |
Definition at line 106 of file pointer.c.
References ptr_data::ptr, rb_fiddle_ptr_new(), rb_secure(), and ruby_xmalloc().
Referenced by rb_fiddle_ptr_s_malloc().
| static VALUE rb_fiddle_ptr_minus | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 518 of file pointer.c.
References NUM2LONG, ptr_data::ptr, rb_fiddle_ptr2cptr(), rb_fiddle_ptr_new(), RPTR_DATA, and size.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_new | ( | void * | ptr, | |
| long | size, | |||
| freefunc_t | func | |||
| ) | [static] |
Definition at line 100 of file pointer.c.
References rb_cPointer, and rb_fiddle_ptr_new2().
Referenced by Init_fiddle_pointer(), rb_fiddle_ptr_malloc(), rb_fiddle_ptr_minus(), rb_fiddle_ptr_plus(), rb_fiddle_ptr_ptr(), rb_fiddle_ptr_ref(), and rb_fiddle_ptr_s_to_ptr().
| static VALUE rb_fiddle_ptr_new2 | ( | VALUE | klass, | |
| void * | ptr, | |||
| long | size, | |||
| freefunc_t | func | |||
| ) | [static] |
Definition at line 84 of file pointer.c.
References fiddle_ptr_data_type, ptr_data::free, OBJ_TAINT, ptr_data::ptr, rb_secure(), ptr_data::size, TypedData_Make_Struct, and val.
Referenced by rb_fiddle_ptr_new().
| static VALUE rb_fiddle_ptr_null_p | ( | VALUE | self | ) | [static] |
Definition at line 302 of file pointer.c.
References fiddle_ptr_data_type, ptr_data::ptr, Qfalse, Qtrue, and TypedData_Get_Struct.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_plus | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 500 of file pointer.c.
References NUM2LONG, ptr_data::ptr, rb_fiddle_ptr2cptr(), rb_fiddle_ptr_new(), RPTR_DATA, and size.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_ptr | ( | VALUE | self | ) | [static] |
Definition at line 271 of file pointer.c.
References fiddle_ptr_data_type, ptr_data::ptr, rb_fiddle_ptr_new(), and TypedData_Get_Struct.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_ref | ( | VALUE | self | ) | [static] |
Definition at line 288 of file pointer.c.
References fiddle_ptr_data_type, ptr_data::ptr, rb_fiddle_ptr_new(), and TypedData_Get_Struct.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_s_allocate | ( | VALUE | klass | ) | [static] |
Definition at line 137 of file pointer.c.
References fiddle_ptr_data_type, ptr_data::free, ptr_data::ptr, rb_secure(), ptr_data::size, and TypedData_Make_Struct.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_s_malloc | ( | int | argc, | |
| VALUE | argv[], | |||
| VALUE | klass | |||
| ) | [static] |
Definition at line 210 of file pointer.c.
References f, get_freefunc(), NULL, NUM2LONG, rb_bug(), rb_fiddle_ptr_malloc(), rb_scan_args(), RPTR_DATA, size, sym, and ptr_data::wrap.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_s_to_ptr | ( | VALUE | self, | |
| VALUE | val | |||
| ) | [static] |
Definition at line 646 of file pointer.c.
References GetOpenFile, id_to_ptr, NULL, NUM2PTR, OBJ_INFECT, ptr_data::ptr, Qundef, rb_check_funcall(), rb_cIO, rb_cPointer, rb_cString, rb_eFiddleError, rb_fiddle_ptr_new(), rb_Integer(), rb_io_stdio_file(), rb_obj_is_kind_of(), rb_raise(), RPTR_DATA, RSTRING_LEN, RTEST, StringValuePtr, and ptr_data::wrap.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_size_get | ( | VALUE | self | ) | [static] |
| static VALUE rb_fiddle_ptr_size_set | ( | VALUE | self, | |
| VALUE | size | |||
| ) | [static] |
Definition at line 620 of file pointer.c.
References NUM2LONG, and RPTR_DATA.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_to_i | ( | VALUE | self | ) | [static] |
Definition at line 241 of file pointer.c.
References fiddle_ptr_data_type, ptr_data::ptr, PTR2NUM, and TypedData_Get_Struct.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_to_s | ( | int | argc, | |
| VALUE | argv[], | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 373 of file pointer.c.
References fiddle_ptr_data_type, NUM2INT, ptr_data::ptr, rb_bug(), rb_scan_args(), rb_tainted_str_new2, TypedData_Get_Struct, and val.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_to_str | ( | int | argc, | |
| VALUE | argv[], | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 411 of file pointer.c.
References fiddle_ptr_data_type, NUM2INT, ptr_data::ptr, rb_bug(), rb_scan_args(), ptr_data::size, TypedData_Get_Struct, and val.
Referenced by Init_fiddle_pointer().
| static VALUE rb_fiddle_ptr_to_value | ( | VALUE | self | ) | [static] |
Definition at line 255 of file pointer.c.
References fiddle_ptr_data_type, ptr_data::ptr, and TypedData_Get_Struct.
Referenced by Init_fiddle_pointer().
const rb_data_type_t fiddle_ptr_data_type [static] |
{
"fiddle/pointer",
{fiddle_ptr_mark, fiddle_ptr_free, fiddle_ptr_memsize,},
}
Definition at line 78 of file pointer.c.
Referenced by rb_fiddle_ptr2cptr(), rb_fiddle_ptr_aref(), rb_fiddle_ptr_aset(), rb_fiddle_ptr_free_get(), rb_fiddle_ptr_free_set(), rb_fiddle_ptr_initialize(), rb_fiddle_ptr_inspect(), rb_fiddle_ptr_new2(), rb_fiddle_ptr_null_p(), rb_fiddle_ptr_ptr(), rb_fiddle_ptr_ref(), rb_fiddle_ptr_s_allocate(), rb_fiddle_ptr_to_i(), rb_fiddle_ptr_to_s(), rb_fiddle_ptr_to_str(), and rb_fiddle_ptr_to_value().
ID id_to_ptr [static] |
Definition at line 45 of file pointer.c.
Referenced by Init_fiddle_pointer(), and rb_fiddle_ptr_s_to_ptr().
| VALUE rb_cPointer |
Definition at line 19 of file pointer.c.
Referenced by Init_fiddle_pointer(), rb_fiddle_ptr2cptr(), rb_fiddle_ptr_aset(), rb_fiddle_ptr_cmp(), rb_fiddle_ptr_eql(), rb_fiddle_ptr_new(), and rb_fiddle_ptr_s_to_ptr().
1.6.1