HEX
Server: Apache
System: Linux vps-cdc32557.vps.ovh.ca 5.15.0-156-generic #166-Ubuntu SMP Sat Aug 9 00:02:46 UTC 2025 x86_64
User: hanode (1017)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //usr/share/ri/3.0.0/system/Fiddle/cdesc-Fiddle.ri
U:RDoc::NormalModule[iI"Fiddle:ET@0o:RDoc::Markup::Document:@parts[o;;[:
@fileI"ext/fiddle/closure.c;T:0@omit_headings_from_table_of_contents_below0o;;[o:RDoc::Markup::Paragraph;[I"A libffi wrapper for Ruby.;To:RDoc::Markup::BlankLineS:RDoc::Markup::Heading:
leveli:	textI"Description;T@o;;[I"LFiddle is an extension to translate a foreign function interface (FFI) ;TI"with ruby.;T@o;;[I"KIt wraps {libffi}[http://sourceware.org/libffi/], a popular C library ;TI"Iwhich provides a portable interface that allows code written in one ;TI"7language to call code written in another language.;T@S;
;i;I"Example;T@o;;[I">Here we will use Fiddle::Function to wrap {floor(3) from ;TI",libm}[http://linux.die.net/man/3/floor];T@o:RDoc::Markup::Verbatim;[I"require 'fiddle'
;TI"
;TI",libm = Fiddle.dlopen('/lib/libm.so.6')
;TI"
;TI"#floor = Fiddle::Function.new(
;TI"  libm['floor'],
;TI"  [Fiddle::TYPE_DOUBLE],
;TI"  Fiddle::TYPE_DOUBLE
;TI")
;TI"
;TI"%puts floor.call(3.14159) #=> 3.0;T:@format0;	I"ext/fiddle/fiddle.c;T;
0o;;[;	I"ext/fiddle/lib/fiddle.rb;T;
0o;;[;	I"%ext/fiddle/lib/fiddle/closure.rb;T;
0o;;[;	I"%ext/fiddle/lib/fiddle/cparser.rb;T;
0o;;[;	I"&ext/fiddle/lib/fiddle/function.rb;T;
0o;;[;	I"$ext/fiddle/lib/fiddle/import.rb;T;
0o;;[;	I""ext/fiddle/lib/fiddle/pack.rb;T;
0o;;[;	I"$ext/fiddle/lib/fiddle/struct.rb;T;
0o;;[;	I"#ext/fiddle/lib/fiddle/types.rb;T;
0o;;[;	I"#ext/fiddle/lib/fiddle/value.rb;T;
0o;;[;	I"%ext/fiddle/lib/fiddle/version.rb;T;
0;	0;
0[[@U:RDoc::Constant[iI"TYPE_VOID;TI"Fiddle::TYPE_VOID;T:public0o;;[o;;[I"TYPE_VOID;T@o;;[I"C type - void;T;	@1;
0@1@cRDoc::NormalModule0U;[iI"TYPE_VOIDP;TI"Fiddle::TYPE_VOIDP;T;0o;;[o;;[I"TYPE_VOIDP;T@o;;[I"C type - void*;T;	@1;
0@1@@^0U;[iI"TYPE_CHAR;TI"Fiddle::TYPE_CHAR;T;0o;;[o;;[I"TYPE_CHAR;T@o;;[I"C type - char;T;	@1;
0@1@@^0U;[iI"TYPE_SHORT;TI"Fiddle::TYPE_SHORT;T;0o;;[o;;[I"TYPE_SHORT;T@o;;[I"C type - short;T;	@1;
0@1@@^0U;[iI"
TYPE_INT;TI"Fiddle::TYPE_INT;T;0o;;[o;;[I"
TYPE_INT;T@o;;[I"C type - int;T;	@1;
0@1@@^0U;[iI"TYPE_LONG;TI"Fiddle::TYPE_LONG;T;0o;;[o;;[I"TYPE_LONG;T@o;;[I"C type - long;T;	@1;
0@1@@^0U;[iI"TYPE_LONG_LONG;TI"Fiddle::TYPE_LONG_LONG;T;0o;;[o;;[I"TYPE_LONG_LONG;T@o;;[I"C type - long long;T;	@1;
0@1@@^0U;[iI"TYPE_INT8_T;TI"Fiddle::TYPE_INT8_T;T;0o;;[o;;[I"TYPE_INT8_T;T@o;;[I"C type - int8_t;T;	@1;
0@1@@^0U;[iI"TYPE_INT16_T;TI"Fiddle::TYPE_INT16_T;T;0o;;[o;;[I"TYPE_INT16_T;T@o;;[I"C type - int16_t;T;	@1;
0@1@@^0U;[iI"TYPE_INT32_T;TI"Fiddle::TYPE_INT32_T;T;0o;;[o;;[I"TYPE_INT32_T;T@o;;[I"C type - int32_t;T;	@1;
0@1@@^0U;[iI"TYPE_INT64_T;TI"Fiddle::TYPE_INT64_T;T;0o;;[o;;[I"TYPE_INT64_T;T@o;;[I"C type - int64_t;T;	@1;
0@1@@^0U;[iI"TYPE_FLOAT;TI"Fiddle::TYPE_FLOAT;T;0o;;[o;;[I"TYPE_FLOAT;T@o;;[I"C type - float;T;	@1;
0@1@@^0U;[iI"TYPE_DOUBLE;TI"Fiddle::TYPE_DOUBLE;T;0o;;[o;;[I"TYPE_DOUBLE;T@o;;[I"C type - double;T;	@1;
0@1@@^0U;[iI"TYPE_VARIADIC;TI"Fiddle::TYPE_VARIADIC;T;0o;;[o;;[I"TYPE_VARIADIC;T@o;;[I"C type - ...;T;	@1;
0@1@@^0U;[iI"TYPE_CONST_STRING;TI"Fiddle::TYPE_CONST_STRING;T;0o;;[o;;[I"TYPE_CONST_STRING;T@o;;[I"7C type - const char* ('\0' terminated const char*);T;	@1;
0@1@@^0U;[iI"TYPE_SIZE_T;TI"Fiddle::TYPE_SIZE_T;T;0o;;[o;;[I"TYPE_SIZE_T;T@o;;[I"C type - size_t;T;	@1;
0@1@@^0U;[iI"TYPE_SSIZE_T;TI"Fiddle::TYPE_SSIZE_T;T;0o;;[o;;[I"TYPE_SSIZE_T;T@o;;[I"C type - ssize_t;T;	@1;
0@1@@^0U;[iI"TYPE_PTRDIFF_T;TI"Fiddle::TYPE_PTRDIFF_T;T;0o;;[o;;[I"TYPE_PTRDIFF_T;T@o;;[I"C type - ptrdiff_t;T;	@1;
0@1@@^0U;[iI"TYPE_INTPTR_T;TI"Fiddle::TYPE_INTPTR_T;T;0o;;[o;;[I"TYPE_INTPTR_T;T@o;;[I"C type - intptr_t;T;	@1;
0@1@@^0U;[iI"TYPE_UINTPTR_T;TI"Fiddle::TYPE_UINTPTR_T;T;0o;;[o;;[I"TYPE_UINTPTR_T;T@o;;[I"C type - uintptr_t;T;	@1;
0@1@@^0U;[iI"ALIGN_VOIDP;TI"Fiddle::ALIGN_VOIDP;T;0o;;[o;;[I"ALIGN_VOIDP;T@o;;[I""The alignment size of a void*;T;	@1;
0@1@@^0U;[iI"ALIGN_CHAR;TI"Fiddle::ALIGN_CHAR;T;0o;;[o;;[I"ALIGN_CHAR;T@o;;[I"!The alignment size of a char;T;	@1;
0@1@@^0U;[iI"ALIGN_SHORT;TI"Fiddle::ALIGN_SHORT;T;0o;;[o;;[I"ALIGN_SHORT;T@o;;[I""The alignment size of a short;T;	@1;
0@1@@^0U;[iI"ALIGN_INT;TI"Fiddle::ALIGN_INT;T;0o;;[o;;[I"ALIGN_INT;T@o;;[I"!The alignment size of an int;T;	@1;
0@1@@^0U;[iI"ALIGN_LONG;TI"Fiddle::ALIGN_LONG;T;0o;;[o;;[I"ALIGN_LONG;T@o;;[I"!The alignment size of a long;T;	@1;
0@1@@^0U;[iI"ALIGN_LONG_LONG;TI"Fiddle::ALIGN_LONG_LONG;T;0o;;[o;;[I"ALIGN_LONG_LONG;T@o;;[I"&The alignment size of a long long;T;	@1;
0@1@@^0U;[iI"ALIGN_INT8_T;TI"Fiddle::ALIGN_INT8_T;T;0o;;[o;;[I"ALIGN_INT8_T;T@o;;[I"#The alignment size of a int8_t;T;	@1;
0@1@@^0U;[iI"ALIGN_INT16_T;TI"Fiddle::ALIGN_INT16_T;T;0o;;[o;;[I"ALIGN_INT16_T;T@o;;[I"$The alignment size of a int16_t;T;	@1;
0@1@@^0U;[iI"ALIGN_INT32_T;TI"Fiddle::ALIGN_INT32_T;T;0o;;[o;;[I"ALIGN_INT32_T;T@o;;[I"$The alignment size of a int32_t;T;	@1;
0@1@@^0U;[iI"ALIGN_INT64_T;TI"Fiddle::ALIGN_INT64_T;T;0o;;[o;;[I"ALIGN_INT64_T;T@o;;[I"$The alignment size of a int64_t;T;	@1;
0@1@@^0U;[iI"ALIGN_FLOAT;TI"Fiddle::ALIGN_FLOAT;T;0o;;[o;;[I"ALIGN_FLOAT;T@o;;[I""The alignment size of a float;T;	@1;
0@1@@^0U;[iI"ALIGN_DOUBLE;TI"Fiddle::ALIGN_DOUBLE;T;0o;;[o;;[I"ALIGN_DOUBLE;T@o;;[I"#The alignment size of a double;T;	@1;
0@1@@^0U;[iI"ALIGN_SIZE_T;TI"Fiddle::ALIGN_SIZE_T;T;0o;;[o;;[I"ALIGN_SIZE_T;T@o;;[I"#The alignment size of a size_t;T;	@1;
0@1@@^0U;[iI"ALIGN_SSIZE_T;TI"Fiddle::ALIGN_SSIZE_T;T;0o;;[o;;[I"ALIGN_SSIZE_T;T@o;;[I"$The alignment size of a ssize_t;T;	@1;
0@1@@^0U;[iI"ALIGN_PTRDIFF_T;TI"Fiddle::ALIGN_PTRDIFF_T;T;0o;;[o;;[I"ALIGN_PTRDIFF_T;T@o;;[I"&The alignment size of a ptrdiff_t;T;	@1;
0@1@@^0U;[iI"ALIGN_INTPTR_T;TI"Fiddle::ALIGN_INTPTR_T;T;0o;;[o;;[I"ALIGN_INTPTR_T;T@o;;[I"%The alignment size of a intptr_t;T;	@1;
0@1@@^0U;[iI"ALIGN_UINTPTR_T;TI"Fiddle::ALIGN_UINTPTR_T;T;0o;;[o;;[I"ALIGN_UINTPTR_T;T@o;;[I"&The alignment size of a uintptr_t;T;	@1;
0@1@@^0U;[iI"WINDOWS;TI"Fiddle::WINDOWS;T;0o;;[o;;[I":Returns a boolean regarding whether the host is WIN32;T;	@1;
0@1@@^0U;[iI"SIZEOF_VOIDP;TI"Fiddle::SIZEOF_VOIDP;T;0o;;[o;;[I"SIZEOF_VOIDP;T@o;;[I"size of a void*;T;	@1;
0@1@@^0U;[iI"SIZEOF_CHAR;TI"Fiddle::SIZEOF_CHAR;T;0o;;[o;;[I"SIZEOF_CHAR;T@o;;[I"size of a char;T;	@1;
0@1@@^0U;[iI"SIZEOF_SHORT;TI"Fiddle::SIZEOF_SHORT;T;0o;;[o;;[I"SIZEOF_SHORT;T@o;;[I"size of a short;T;	@1;
0@1@@^0U;[iI"SIZEOF_INT;TI"Fiddle::SIZEOF_INT;T;0o;;[o;;[I"SIZEOF_INT;T@o;;[I"size of an int;T;	@1;
0@1@@^0U;[iI"SIZEOF_LONG;TI"Fiddle::SIZEOF_LONG;T;0o;;[o;;[I"SIZEOF_LONG;T@o;;[I"size of a long;T;	@1;
0@1@@^0U;[iI"SIZEOF_LONG_LONG;TI"Fiddle::SIZEOF_LONG_LONG;T;0o;;[o;;[I"SIZEOF_LONG_LONG;T@o;;[I"size of a long long;T;	@1;
0@1@@^0U;[iI"SIZEOF_INT8_T;TI"Fiddle::SIZEOF_INT8_T;T;0o;;[o;;[I"SIZEOF_INT8_T;T@o;;[I"size of a int8_t;T;	@1;
0@1@@^0U;[iI"SIZEOF_INT16_T;TI"Fiddle::SIZEOF_INT16_T;T;0o;;[o;;[I"SIZEOF_INT16_T;T@o;;[I"size of a int16_t;T;	@1;
0@1@@^0U;[iI"SIZEOF_INT32_T;TI"Fiddle::SIZEOF_INT32_T;T;0o;;[o;;[I"SIZEOF_INT32_T;T@o;;[I"size of a int32_t;T;	@1;
0@1@@^0U;[iI"SIZEOF_INT64_T;TI"Fiddle::SIZEOF_INT64_T;T;0o;;[o;;[I"SIZEOF_INT64_T;T@o;;[I"size of a int64_t;T;	@1;
0@1@@^0U;[iI"SIZEOF_FLOAT;TI"Fiddle::SIZEOF_FLOAT;T;0o;;[o;;[I"SIZEOF_FLOAT;T@o;;[I"size of a float;T;	@1;
0@1@@^0U;[iI"SIZEOF_DOUBLE;TI"Fiddle::SIZEOF_DOUBLE;T;0o;;[o;;[I"SIZEOF_DOUBLE;T@o;;[I"size of a double;T;	@1;
0@1@@^0U;[iI"SIZEOF_SIZE_T;TI"Fiddle::SIZEOF_SIZE_T;T;0o;;[o;;[I"SIZEOF_SIZE_T;T@o;;[I"size of a size_t;T;	@1;
0@1@@^0U;[iI"SIZEOF_SSIZE_T;TI"Fiddle::SIZEOF_SSIZE_T;T;0o;;[o;;[I"SIZEOF_SSIZE_T;T@o;;[I"size of a ssize_t;T;	@1;
0@1@@^0U;[iI"SIZEOF_PTRDIFF_T;TI"Fiddle::SIZEOF_PTRDIFF_T;T;0o;;[o;;[I"SIZEOF_PTRDIFF_T;T@o;;[I"size of a ptrdiff_t;T;	@1;
0@1@@^0U;[iI"SIZEOF_INTPTR_T;TI"Fiddle::SIZEOF_INTPTR_T;T;0o;;[o;;[I"SIZEOF_INTPTR_T;T@o;;[I"size of a intptr_t;T;	@1;
0@1@@^0U;[iI"SIZEOF_UINTPTR_T;TI"Fiddle::SIZEOF_UINTPTR_T;T;0o;;[o;;[I"SIZEOF_UINTPTR_T;T@o;;[I"size of a uintptr_t;T;	@1;
0@1@@^0U;[iI"SIZEOF_CONST_STRING;TI" Fiddle::SIZEOF_CONST_STRING;T;0o;;[o;;[I"SIZEOF_CONST_STRING;T@o;;[I"size of a const char*;T;	@1;
0@1@@^0U;[iI"RUBY_FREE;TI"Fiddle::RUBY_FREE;T;0o;;[o;;[I"RUBY_FREE;T@o;;[I")Address of the ruby_xfree() function;T;	@1;
0@1@@^0U;[iI"BUILD_RUBY_PLATFORM;TI" Fiddle::BUILD_RUBY_PLATFORM;T;0o;;[
o;;[I"BUILD_RUBY_PLATFORM;T@o;;[I"7Platform built against (i.e. "x86_64-linux", etc.);T@o;;[I"See also RUBY_PLATFORM;T;	@1;
0@1@@^0U;[iI"VERSION;TI"Fiddle::VERSION;T;0o;;[;	@O;
0@O@@^0[[[I"
class;T[[;[[I"dlopen;TI"ext/fiddle/lib/fiddle.rb;T[I"
dlunwrap;TI"ext/fiddle/fiddle.c;T[I"dlwrap;T@[I"	free;T@[I"last_error;T@[I"last_error=;T@[I"malloc;T@[I"realloc;T@[I"win32_last_error;T@[I"win32_last_error=;T@[:protected[[:private[[I"
instance;T[[;[[;[[;[[@@[[U:RDoc::Context::Section[i0o;;[;	0;
0[@@1@4@7@:@=@@@C@F@I@L@O@OcRDoc::TopLevel