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::BlankLine S: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[i I"TYPE_VOID;TI"Fiddle::TYPE_VOID;T:public0o;;[o;;[I"TYPE_VOID;T@o;;[I"C type - void;T; @1;
0@1@cRDoc::NormalModule0U;[i I"TYPE_VOIDP;TI"Fiddle::TYPE_VOIDP;T;0o;;[o;;[I"TYPE_VOIDP;T@o;;[I"C type - void*;T; @1;
0@1@@^0U;[i I"TYPE_CHAR;TI"Fiddle::TYPE_CHAR;T;0o;;[o;;[I"TYPE_CHAR;T@o;;[I"C type - char;T; @1;
0@1@@^0U;[i I"TYPE_SHORT;TI"Fiddle::TYPE_SHORT;T;0o;;[o;;[I"TYPE_SHORT;T@o;;[I"C type - short;T; @1;
0@1@@^0U;[i I"
TYPE_INT;TI"Fiddle::TYPE_INT;T;0o;;[o;;[I"
TYPE_INT;T@o;;[I"C type - int;T; @1;
0@1@@^0U;[i I"TYPE_LONG;TI"Fiddle::TYPE_LONG;T;0o;;[o;;[I"TYPE_LONG;T@o;;[I"C type - long;T; @1;
0@1@@^0U;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"TYPE_FLOAT;TI"Fiddle::TYPE_FLOAT;T;0o;;[o;;[I"TYPE_FLOAT;T@o;;[I"C type - float;T; @1;
0@1@@^0U;[i I"TYPE_DOUBLE;TI"Fiddle::TYPE_DOUBLE;T;0o;;[o;;[I"TYPE_DOUBLE;T@o;;[I"C type - double;T; @1;
0@1@@^0U;[i I"TYPE_VARIADIC;TI"Fiddle::TYPE_VARIADIC;T;0o;;[o;;[I"TYPE_VARIADIC;T@o;;[I"C type - ...;T; @1;
0@1@@^0U;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"WINDOWS;TI"Fiddle::WINDOWS;T;0o;;[o;;[I":Returns a boolean regarding whether the host is WIN32;T; @1;
0@1@@^0U;[i I"SIZEOF_VOIDP;TI"Fiddle::SIZEOF_VOIDP;T;0o;;[o;;[I"SIZEOF_VOIDP;T@o;;[I"size of a void*;T; @1;
0@1@@^0U;[i I"SIZEOF_CHAR;TI"Fiddle::SIZEOF_CHAR;T;0o;;[o;;[I"SIZEOF_CHAR;T@o;;[I"size of a char;T; @1;
0@1@@^0U;[i I"SIZEOF_SHORT;TI"Fiddle::SIZEOF_SHORT;T;0o;;[o;;[I"SIZEOF_SHORT;T@o;;[I"size of a short;T; @1;
0@1@@^0U;[i I"SIZEOF_INT;TI"Fiddle::SIZEOF_INT;T;0o;;[o;;[I"SIZEOF_INT;T@o;;[I"size of an int;T; @1;
0@1@@^0U;[i I"SIZEOF_LONG;TI"Fiddle::SIZEOF_LONG;T;0o;;[o;;[I"SIZEOF_LONG;T@o;;[I"size of a long;T; @1;
0@1@@^0U;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"SIZEOF_FLOAT;TI"Fiddle::SIZEOF_FLOAT;T;0o;;[o;;[I"SIZEOF_FLOAT;T@o;;[I"size of a float;T; @1;
0@1@@^0U;[i I"SIZEOF_DOUBLE;TI"Fiddle::SIZEOF_DOUBLE;T;0o;;[o;;[I"SIZEOF_DOUBLE;T@o;;[I"size of a double;T; @1;
0@1@@^0U;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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;[i I"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[i 0o;;[ ; 0;
0[@@1@4@7@:@=@@@C@F@I@L@O@OcRDoc::TopLevel