ffi 1.9.21-x64-mingw32 → 1.9.22-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of ffi might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +22 -0
- data/.gitmodules +3 -0
- data/.travis.yml +52 -0
- data/.yardopts +5 -0
- data/Gemfile +15 -0
- data/{spec/ffi/LICENSE.SPECS → LICENSE.SPECS} +1 -1
- data/README.md +1 -1
- data/Rakefile +28 -3
- data/appveyor.yml +22 -0
- data/ffi.gemspec +14 -1
- data/lib/2.0/ffi_c.so +0 -0
- data/lib/2.1/ffi_c.so +0 -0
- data/lib/2.2/ffi_c.so +0 -0
- data/lib/2.3/ffi_c.so +0 -0
- data/lib/2.4/ffi_c.so +0 -0
- data/lib/2.5/ffi_c.so +0 -0
- data/lib/ffi/library.rb +1 -1
- data/lib/ffi/version.rb +1 -1
- data/samples/getlogin.rb +8 -0
- data/samples/getpid.rb +8 -0
- data/samples/gettimeofday.rb +18 -0
- data/samples/hello.rb +7 -0
- data/samples/inotify.rb +60 -0
- data/samples/pty.rb +76 -0
- data/samples/qsort.rb +21 -0
- data/samples/sample_helper.rb +6 -0
- metadata +17 -526
- data/ext/ffi_c/AbstractMemory.c +0 -1109
- data/ext/ffi_c/AbstractMemory.h +0 -175
- data/ext/ffi_c/ArrayType.c +0 -162
- data/ext/ffi_c/ArrayType.h +0 -59
- data/ext/ffi_c/Buffer.c +0 -365
- data/ext/ffi_c/Call.c +0 -517
- data/ext/ffi_c/Call.h +0 -110
- data/ext/ffi_c/ClosurePool.c +0 -283
- data/ext/ffi_c/ClosurePool.h +0 -57
- data/ext/ffi_c/DataConverter.c +0 -91
- data/ext/ffi_c/DynamicLibrary.c +0 -339
- data/ext/ffi_c/DynamicLibrary.h +0 -98
- data/ext/ffi_c/Function.c +0 -998
- data/ext/ffi_c/Function.h +0 -87
- data/ext/ffi_c/FunctionInfo.c +0 -271
- data/ext/ffi_c/LastError.c +0 -184
- data/ext/ffi_c/LastError.h +0 -47
- data/ext/ffi_c/LongDouble.c +0 -63
- data/ext/ffi_c/LongDouble.h +0 -51
- data/ext/ffi_c/MappedType.c +0 -168
- data/ext/ffi_c/MappedType.h +0 -59
- data/ext/ffi_c/MemoryPointer.c +0 -197
- data/ext/ffi_c/MemoryPointer.h +0 -53
- data/ext/ffi_c/MethodHandle.c +0 -358
- data/ext/ffi_c/MethodHandle.h +0 -55
- data/ext/ffi_c/Platform.c +0 -129
- data/ext/ffi_c/Platform.h +0 -45
- data/ext/ffi_c/Pointer.c +0 -508
- data/ext/ffi_c/Pointer.h +0 -63
- data/ext/ffi_c/Struct.c +0 -829
- data/ext/ffi_c/Struct.h +0 -106
- data/ext/ffi_c/StructByReference.c +0 -190
- data/ext/ffi_c/StructByReference.h +0 -50
- data/ext/ffi_c/StructByValue.c +0 -150
- data/ext/ffi_c/StructByValue.h +0 -55
- data/ext/ffi_c/StructLayout.c +0 -698
- data/ext/ffi_c/Thread.c +0 -352
- data/ext/ffi_c/Thread.h +0 -95
- data/ext/ffi_c/Type.c +0 -397
- data/ext/ffi_c/Type.h +0 -62
- data/ext/ffi_c/Types.c +0 -139
- data/ext/ffi_c/Types.h +0 -89
- data/ext/ffi_c/Variadic.c +0 -304
- data/ext/ffi_c/compat.h +0 -78
- data/ext/ffi_c/extconf.rb +0 -71
- data/ext/ffi_c/ffi.c +0 -98
- data/ext/ffi_c/libffi.bsd.mk +0 -40
- data/ext/ffi_c/libffi.darwin.mk +0 -105
- data/ext/ffi_c/libffi.gnu.mk +0 -32
- data/ext/ffi_c/libffi.mk +0 -18
- data/ext/ffi_c/libffi.vc.mk +0 -26
- data/ext/ffi_c/libffi.vc64.mk +0 -26
- data/ext/ffi_c/libffi/ChangeLog.libffi +0 -584
- data/ext/ffi_c/libffi/ChangeLog.libffi-3.1 +0 -6000
- data/ext/ffi_c/libffi/ChangeLog.libgcj +0 -40
- data/ext/ffi_c/libffi/ChangeLog.v1 +0 -764
- data/ext/ffi_c/libffi/LICENSE +0 -21
- data/ext/ffi_c/libffi/Makefile.am +0 -205
- data/ext/ffi_c/libffi/Makefile.in +0 -1805
- data/ext/ffi_c/libffi/README +0 -454
- data/ext/ffi_c/libffi/acinclude.m4 +0 -473
- data/ext/ffi_c/libffi/aclocal.m4 +0 -2134
- data/ext/ffi_c/libffi/autogen.sh +0 -2
- data/ext/ffi_c/libffi/autom4te.cache/output.0 +0 -21972
- data/ext/ffi_c/libffi/autom4te.cache/output.1 +0 -21972
- data/ext/ffi_c/libffi/autom4te.cache/output.2 +0 -21972
- data/ext/ffi_c/libffi/autom4te.cache/output.3 +0 -21972
- data/ext/ffi_c/libffi/autom4te.cache/requests +0 -331
- data/ext/ffi_c/libffi/autom4te.cache/traces.0 +0 -4010
- data/ext/ffi_c/libffi/autom4te.cache/traces.1 +0 -1005
- data/ext/ffi_c/libffi/autom4te.cache/traces.2 +0 -4010
- data/ext/ffi_c/libffi/autom4te.cache/traces.3 +0 -4010
- data/ext/ffi_c/libffi/compile +0 -347
- data/ext/ffi_c/libffi/config.guess +0 -1462
- data/ext/ffi_c/libffi/config.sub +0 -1825
- data/ext/ffi_c/libffi/configure +0 -21972
- data/ext/ffi_c/libffi/configure.ac +0 -388
- data/ext/ffi_c/libffi/configure.host +0 -272
- data/ext/ffi_c/libffi/depcomp +0 -791
- data/ext/ffi_c/libffi/doc/Makefile.am +0 -3
- data/ext/ffi_c/libffi/doc/Makefile.in +0 -811
- data/ext/ffi_c/libffi/doc/libffi.texi +0 -985
- data/ext/ffi_c/libffi/doc/mdate-sh +0 -228
- data/ext/ffi_c/libffi/doc/texinfo.tex +0 -10079
- data/ext/ffi_c/libffi/doc/version.texi +0 -4
- data/ext/ffi_c/libffi/fficonfig.h.in +0 -210
- data/ext/ffi_c/libffi/fficonfig.h.in~ +0 -210
- data/ext/ffi_c/libffi/generate-darwin-source-and-headers.py +0 -207
- data/ext/ffi_c/libffi/include/Makefile.am +0 -9
- data/ext/ffi_c/libffi/include/Makefile.in +0 -604
- data/ext/ffi_c/libffi/include/ffi.h.in +0 -484
- data/ext/ffi_c/libffi/include/ffi_cfi.h +0 -55
- data/ext/ffi_c/libffi/include/ffi_common.h +0 -147
- data/ext/ffi_c/libffi/install-sh +0 -508
- data/ext/ffi_c/libffi/libffi.map.in +0 -80
- data/ext/ffi_c/libffi/libffi.pc.in +0 -11
- data/ext/ffi_c/libffi/libffi.xcodeproj/project.pbxproj +0 -637
- data/ext/ffi_c/libffi/libtool-ldflags +0 -106
- data/ext/ffi_c/libffi/libtool-version +0 -29
- data/ext/ffi_c/libffi/ltmain.sh +0 -11156
- data/ext/ffi_c/libffi/m4/asmcfi.m4 +0 -13
- data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +0 -69
- data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +0 -181
- data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +0 -122
- data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +0 -72
- data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +0 -84
- data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +0 -70
- data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +0 -301
- data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +0 -225
- data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +0 -79
- data/ext/ffi_c/libffi/m4/libtool.m4 +0 -8387
- data/ext/ffi_c/libffi/m4/ltoptions.m4 +0 -437
- data/ext/ffi_c/libffi/m4/ltsugar.m4 +0 -124
- data/ext/ffi_c/libffi/m4/ltversion.m4 +0 -23
- data/ext/ffi_c/libffi/m4/lt~obsolete.m4 +0 -99
- data/ext/ffi_c/libffi/man/Makefile.am +0 -8
- data/ext/ffi_c/libffi/man/Makefile.in +0 -558
- data/ext/ffi_c/libffi/man/ffi.3 +0 -41
- data/ext/ffi_c/libffi/man/ffi_call.3 +0 -103
- data/ext/ffi_c/libffi/man/ffi_prep_cif.3 +0 -68
- data/ext/ffi_c/libffi/man/ffi_prep_cif_var.3 +0 -73
- data/ext/ffi_c/libffi/missing +0 -215
- data/ext/ffi_c/libffi/msvcc.sh +0 -260
- data/ext/ffi_c/libffi/src/aarch64/ffi.c +0 -941
- data/ext/ffi_c/libffi/src/aarch64/ffitarget.h +0 -81
- data/ext/ffi_c/libffi/src/aarch64/internal.h +0 -67
- data/ext/ffi_c/libffi/src/aarch64/sysv.S +0 -438
- data/ext/ffi_c/libffi/src/alpha/ffi.c +0 -521
- data/ext/ffi_c/libffi/src/alpha/ffitarget.h +0 -57
- data/ext/ffi_c/libffi/src/alpha/internal.h +0 -23
- data/ext/ffi_c/libffi/src/alpha/osf.S +0 -282
- data/ext/ffi_c/libffi/src/arc/arcompact.S +0 -135
- data/ext/ffi_c/libffi/src/arc/ffi.c +0 -266
- data/ext/ffi_c/libffi/src/arc/ffitarget.h +0 -53
- data/ext/ffi_c/libffi/src/arm/ffi.c +0 -808
- data/ext/ffi_c/libffi/src/arm/ffitarget.h +0 -82
- data/ext/ffi_c/libffi/src/arm/internal.h +0 -7
- data/ext/ffi_c/libffi/src/arm/sysv.S +0 -383
- data/ext/ffi_c/libffi/src/avr32/ffi.c +0 -423
- data/ext/ffi_c/libffi/src/avr32/ffitarget.h +0 -55
- data/ext/ffi_c/libffi/src/avr32/sysv.S +0 -208
- data/ext/ffi_c/libffi/src/bfin/ffi.c +0 -196
- data/ext/ffi_c/libffi/src/bfin/ffitarget.h +0 -43
- data/ext/ffi_c/libffi/src/bfin/sysv.S +0 -179
- data/ext/ffi_c/libffi/src/closures.c +0 -890
- data/ext/ffi_c/libffi/src/cris/ffi.c +0 -386
- data/ext/ffi_c/libffi/src/cris/ffitarget.h +0 -56
- data/ext/ffi_c/libffi/src/cris/sysv.S +0 -215
- data/ext/ffi_c/libffi/src/debug.c +0 -64
- data/ext/ffi_c/libffi/src/dlmalloc.c +0 -5166
- data/ext/ffi_c/libffi/src/frv/eabi.S +0 -128
- data/ext/ffi_c/libffi/src/frv/ffi.c +0 -292
- data/ext/ffi_c/libffi/src/frv/ffitarget.h +0 -62
- data/ext/ffi_c/libffi/src/ia64/ffi.c +0 -586
- data/ext/ffi_c/libffi/src/ia64/ffitarget.h +0 -55
- data/ext/ffi_c/libffi/src/ia64/ia64_flags.h +0 -40
- data/ext/ffi_c/libffi/src/ia64/unix.S +0 -560
- data/ext/ffi_c/libffi/src/java_raw_api.c +0 -374
- data/ext/ffi_c/libffi/src/m32r/ffi.c +0 -232
- data/ext/ffi_c/libffi/src/m32r/ffitarget.h +0 -53
- data/ext/ffi_c/libffi/src/m32r/sysv.S +0 -121
- data/ext/ffi_c/libffi/src/m68k/ffi.c +0 -362
- data/ext/ffi_c/libffi/src/m68k/ffitarget.h +0 -54
- data/ext/ffi_c/libffi/src/m68k/sysv.S +0 -357
- data/ext/ffi_c/libffi/src/m88k/ffi.c +0 -400
- data/ext/ffi_c/libffi/src/m88k/ffitarget.h +0 -49
- data/ext/ffi_c/libffi/src/m88k/obsd.S +0 -209
- data/ext/ffi_c/libffi/src/metag/ffi.c +0 -330
- data/ext/ffi_c/libffi/src/metag/ffitarget.h +0 -53
- data/ext/ffi_c/libffi/src/metag/sysv.S +0 -311
- data/ext/ffi_c/libffi/src/microblaze/ffi.c +0 -321
- data/ext/ffi_c/libffi/src/microblaze/ffitarget.h +0 -53
- data/ext/ffi_c/libffi/src/microblaze/sysv.S +0 -302
- data/ext/ffi_c/libffi/src/mips/ffi.c +0 -1105
- data/ext/ffi_c/libffi/src/mips/ffitarget.h +0 -249
- data/ext/ffi_c/libffi/src/mips/n32.S +0 -661
- data/ext/ffi_c/libffi/src/mips/o32.S +0 -502
- data/ext/ffi_c/libffi/src/moxie/eabi.S +0 -101
- data/ext/ffi_c/libffi/src/moxie/ffi.c +0 -272
- data/ext/ffi_c/libffi/src/moxie/ffitarget.h +0 -52
- data/ext/ffi_c/libffi/src/nios2/ffi.c +0 -304
- data/ext/ffi_c/libffi/src/nios2/ffitarget.h +0 -52
- data/ext/ffi_c/libffi/src/nios2/sysv.S +0 -136
- data/ext/ffi_c/libffi/src/or1k/ffi.c +0 -328
- data/ext/ffi_c/libffi/src/or1k/ffitarget.h +0 -58
- data/ext/ffi_c/libffi/src/or1k/sysv.S +0 -107
- data/ext/ffi_c/libffi/src/pa/ffi.c +0 -719
- data/ext/ffi_c/libffi/src/pa/ffitarget.h +0 -85
- data/ext/ffi_c/libffi/src/pa/hpux32.S +0 -368
- data/ext/ffi_c/libffi/src/pa/linux.S +0 -357
- data/ext/ffi_c/libffi/src/powerpc/aix.S +0 -328
- data/ext/ffi_c/libffi/src/powerpc/aix_closure.S +0 -447
- data/ext/ffi_c/libffi/src/powerpc/asm.h +0 -125
- data/ext/ffi_c/libffi/src/powerpc/darwin.S +0 -378
- data/ext/ffi_c/libffi/src/powerpc/darwin_closure.S +0 -571
- data/ext/ffi_c/libffi/src/powerpc/ffi.c +0 -173
- data/ext/ffi_c/libffi/src/powerpc/ffi_darwin.c +0 -1359
- data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +0 -945
- data/ext/ffi_c/libffi/src/powerpc/ffi_powerpc.h +0 -94
- data/ext/ffi_c/libffi/src/powerpc/ffi_sysv.c +0 -923
- data/ext/ffi_c/libffi/src/powerpc/ffitarget.h +0 -195
- data/ext/ffi_c/libffi/src/powerpc/linux64.S +0 -228
- data/ext/ffi_c/libffi/src/powerpc/linux64_closure.S +0 -488
- data/ext/ffi_c/libffi/src/powerpc/ppc_closure.S +0 -397
- data/ext/ffi_c/libffi/src/powerpc/sysv.S +0 -175
- data/ext/ffi_c/libffi/src/prep_cif.c +0 -261
- data/ext/ffi_c/libffi/src/raw_api.c +0 -267
- data/ext/ffi_c/libffi/src/s390/ffi.c +0 -756
- data/ext/ffi_c/libffi/src/s390/ffitarget.h +0 -70
- data/ext/ffi_c/libffi/src/s390/internal.h +0 -11
- data/ext/ffi_c/libffi/src/s390/sysv.S +0 -325
- data/ext/ffi_c/libffi/src/sh/ffi.c +0 -717
- data/ext/ffi_c/libffi/src/sh/ffitarget.h +0 -54
- data/ext/ffi_c/libffi/src/sh/sysv.S +0 -850
- data/ext/ffi_c/libffi/src/sh64/ffi.c +0 -469
- data/ext/ffi_c/libffi/src/sh64/ffitarget.h +0 -58
- data/ext/ffi_c/libffi/src/sh64/sysv.S +0 -539
- data/ext/ffi_c/libffi/src/sparc/ffi.c +0 -468
- data/ext/ffi_c/libffi/src/sparc/ffi64.c +0 -608
- data/ext/ffi_c/libffi/src/sparc/ffitarget.h +0 -81
- data/ext/ffi_c/libffi/src/sparc/internal.h +0 -26
- data/ext/ffi_c/libffi/src/sparc/v8.S +0 -443
- data/ext/ffi_c/libffi/src/sparc/v9.S +0 -440
- data/ext/ffi_c/libffi/src/tile/ffi.c +0 -355
- data/ext/ffi_c/libffi/src/tile/ffitarget.h +0 -65
- data/ext/ffi_c/libffi/src/tile/tile.S +0 -360
- data/ext/ffi_c/libffi/src/types.c +0 -106
- data/ext/ffi_c/libffi/src/vax/elfbsd.S +0 -195
- data/ext/ffi_c/libffi/src/vax/ffi.c +0 -276
- data/ext/ffi_c/libffi/src/vax/ffitarget.h +0 -49
- data/ext/ffi_c/libffi/src/x86/asmnames.h +0 -30
- data/ext/ffi_c/libffi/src/x86/ffi.c +0 -733
- data/ext/ffi_c/libffi/src/x86/ffi64.c +0 -857
- data/ext/ffi_c/libffi/src/x86/ffitarget.h +0 -141
- data/ext/ffi_c/libffi/src/x86/ffiw64.c +0 -287
- data/ext/ffi_c/libffi/src/x86/internal.h +0 -29
- data/ext/ffi_c/libffi/src/x86/internal64.h +0 -22
- data/ext/ffi_c/libffi/src/x86/sysv.S +0 -1043
- data/ext/ffi_c/libffi/src/x86/unix64.S +0 -525
- data/ext/ffi_c/libffi/src/x86/win64.S +0 -232
- data/ext/ffi_c/libffi/src/x86/win64_intel.S +0 -237
- data/ext/ffi_c/libffi/src/xtensa/ffi.c +0 -298
- data/ext/ffi_c/libffi/src/xtensa/ffitarget.h +0 -53
- data/ext/ffi_c/libffi/src/xtensa/sysv.S +0 -253
- data/ext/ffi_c/libffi/stamp-h.in +0 -1
- data/ext/ffi_c/libffi/testsuite/Makefile.am +0 -85
- data/ext/ffi_c/libffi/testsuite/Makefile.in +0 -607
- data/ext/ffi_c/libffi/testsuite/config/default.exp +0 -1
- data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +0 -445
- data/ext/ffi_c/libffi/testsuite/lib/target-libpath.exp +0 -283
- data/ext/ffi_c/libffi/testsuite/lib/wrapper.exp +0 -45
- data/ext/ffi_c/libffi/testsuite/libffi.call/align_mixed.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +0 -30
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn0.c +0 -89
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn1.c +0 -81
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn2.c +0 -81
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn3.c +0 -82
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn4.c +0 -89
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn5.c +0 -92
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_fn6.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_loc_fn0.c +0 -95
- data/ext/ffi_c/libffi/testsuite/libffi.call/closure_simple.c +0 -55
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_12byte.c +0 -94
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_16byte.c +0 -95
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_18byte.c +0 -96
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_19byte.c +0 -102
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_1_1byte.c +0 -89
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte.c +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_20byte1.c +0 -93
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_24byte.c +0 -113
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_2byte.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3_1byte.c +0 -95
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte1.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_3byte2.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4_1byte.c +0 -98
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_4byte.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5_1_byte.c +0 -109
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_5byte.c +0 -98
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_64byte.c +0 -124
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6_1_byte.c +0 -113
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_6byte.c +0 -99
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7_1_byte.c +0 -117
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_7byte.c +0 -97
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_8byte.c +0 -88
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte1.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_9byte2.c +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_double.c +0 -93
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_float.c +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble.c +0 -92
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split.c +0 -132
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_longdouble_split2.c +0 -115
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_pointer.c +0 -95
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint16.c +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint32.c +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_sint64.c +0 -92
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint16.c +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint32.c +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_align_uint64.c +0 -93
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_dbls_struct.c +0 -66
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double.c +0 -43
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_double_va.c +0 -61
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_float.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble.c +0 -105
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_longdouble_va.c +0 -61
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_args.c +0 -70
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_many_mixed_float_double.c +0 -55
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_schar.c +0 -74
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshort.c +0 -74
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +0 -86
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_uchar.c +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushort.c +0 -74
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +0 -86
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer.c +0 -74
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_pointer_stack.c +0 -142
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_schar.c +0 -44
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sint.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_sshort.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_struct_va1.c +0 -114
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uchar_va.c +0 -44
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint.c +0 -43
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_uint_va.c +0 -45
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulong_va.c +0 -45
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ulonglong.c +0 -47
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort.c +0 -43
- data/ext/ffi_c/libffi/testsuite/libffi.call/cls_ushort_va.c +0 -44
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_abi.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.call/err_bad_typedef.c +0 -26
- data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +0 -136
- data/ext/ffi_c/libffi/testsuite/libffi.call/float.c +0 -59
- data/ext/ffi_c/libffi/testsuite/libffi.call/float1.c +0 -60
- data/ext/ffi_c/libffi/testsuite/libffi.call/float2.c +0 -60
- data/ext/ffi_c/libffi/testsuite/libffi.call/float3.c +0 -74
- data/ext/ffi_c/libffi/testsuite/libffi.call/float4.c +0 -62
- data/ext/ffi_c/libffi/testsuite/libffi.call/float_va.c +0 -107
- data/ext/ffi_c/libffi/testsuite/libffi.call/huge_struct.c +0 -341
- data/ext/ffi_c/libffi/testsuite/libffi.call/many.c +0 -59
- data/ext/ffi_c/libffi/testsuite/libffi.call/many2.c +0 -57
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_double.c +0 -70
- data/ext/ffi_c/libffi/testsuite/libffi.call/many_mixed.c +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.call/negint.c +0 -52
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct.c +0 -152
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct1.c +0 -161
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +0 -133
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct11.c +0 -121
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct2.c +0 -110
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct3.c +0 -111
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct4.c +0 -111
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct5.c +0 -112
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct6.c +0 -131
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct7.c +0 -111
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct8.c +0 -131
- data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct9.c +0 -131
- data/ext/ffi_c/libffi/testsuite/libffi.call/offsets.c +0 -46
- data/ext/ffi_c/libffi/testsuite/libffi.call/pr1172638.c +0 -127
- data/ext/ffi_c/libffi/testsuite/libffi.call/problem1.c +0 -90
- data/ext/ffi_c/libffi/testsuite/libffi.call/promotion.c +0 -59
- data/ext/ffi_c/libffi/testsuite/libffi.call/pyobjc-tc.c +0 -114
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl1.c +0 -43
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_dbl2.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl.c +0 -35
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl1.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl2.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_fl3.c +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ldl.c +0 -34
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll.c +0 -41
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ll1.c +0 -43
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sc.c +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_sl.c +0 -38
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_uc.c +0 -38
- data/ext/ffi_c/libffi/testsuite/libffi.call/return_ul.c +0 -38
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large.c +0 -145
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_large2.c +0 -148
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium.c +0 -124
- data/ext/ffi_c/libffi/testsuite/libffi.call/stret_medium2.c +0 -125
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen.c +0 -44
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen2.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen3.c +0 -49
- data/ext/ffi_c/libffi/testsuite/libffi.call/strlen4.c +0 -55
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct1.c +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct2.c +0 -67
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct3.c +0 -60
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct4.c +0 -64
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct5.c +0 -66
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct6.c +0 -64
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct7.c +0 -74
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct8.c +0 -81
- data/ext/ffi_c/libffi/testsuite/libffi.call/struct9.c +0 -68
- data/ext/ffi_c/libffi/testsuite/libffi.call/testclosure.c +0 -70
- data/ext/ffi_c/libffi/testsuite/libffi.call/uninitialized.c +0 -61
- data/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest.cc +0 -117
- data/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc +0 -54
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_1.c +0 -196
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct1.c +0 -121
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct2.c +0 -123
- data/ext/ffi_c/libffi/testsuite/libffi.call/va_struct3.c +0 -125
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex.inc +0 -91
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_align_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex.inc +0 -42
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct.inc +0 -71
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_struct_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va.inc +0 -80
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_float.c +0 -16
- data/ext/ffi_c/libffi/testsuite/libffi.complex/cls_complex_va_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.exp +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex.inc +0 -51
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_double.inc +0 -7
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_float.inc +0 -7
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_defs_longdouble.inc +0 -7
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_int.c +0 -86
- data/ext/ffi_c/libffi/testsuite/libffi.complex/complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/ffitest.h +0 -1
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex.inc +0 -78
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/many_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex.inc +0 -37
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1.inc +0 -41
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex1_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2.inc +0 -44
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex2_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_double.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_float.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.complex/return_complex_longdouble.c +0 -10
- data/ext/ffi_c/libffi/testsuite/libffi.go/aa-direct.c +0 -34
- data/ext/ffi_c/libffi/testsuite/libffi.go/closure1.c +0 -28
- data/ext/ffi_c/libffi/testsuite/libffi.go/ffitest.h +0 -1
- data/ext/ffi_c/libffi/testsuite/libffi.go/go.exp +0 -36
- data/ext/ffi_c/libffi/testsuite/libffi.go/static-chain.h +0 -19
- data/ext/ffi_c/rbffi.h +0 -57
- data/ext/ffi_c/rbffi_endian.h +0 -59
- data/ext/ffi_c/win32/stdbool.h +0 -8
- data/ext/ffi_c/win32/stdint.h +0 -201
- data/gen/Rakefile +0 -30
- data/libtest/Benchmark.c +0 -52
- data/libtest/BoolTest.c +0 -34
- data/libtest/BufferTest.c +0 -31
- data/libtest/ClosureTest.c +0 -205
- data/libtest/EnumTest.c +0 -51
- data/libtest/FunctionTest.c +0 -70
- data/libtest/GNUmakefile +0 -149
- data/libtest/GlobalVariable.c +0 -62
- data/libtest/LastErrorTest.c +0 -21
- data/libtest/NumberTest.c +0 -132
- data/libtest/PointerTest.c +0 -63
- data/libtest/ReferenceTest.c +0 -23
- data/libtest/StringTest.c +0 -34
- data/libtest/StructTest.c +0 -243
- data/libtest/UnionTest.c +0 -43
- data/libtest/VariadicTest.c +0 -99
- data/spec/ffi/async_callback_spec.rb +0 -35
- data/spec/ffi/bitmask_spec.rb +0 -575
- data/spec/ffi/bool_spec.rb +0 -32
- data/spec/ffi/buffer_spec.rb +0 -279
- data/spec/ffi/callback_spec.rb +0 -773
- data/spec/ffi/custom_param_type.rb +0 -37
- data/spec/ffi/custom_type_spec.rb +0 -74
- data/spec/ffi/dup_spec.rb +0 -52
- data/spec/ffi/embed-test/ext/Makefile +0 -242
- data/spec/ffi/enum_spec.rb +0 -423
- data/spec/ffi/errno_spec.rb +0 -20
- data/spec/ffi/ffi_spec.rb +0 -28
- data/spec/ffi/fixtures/Benchmark.c +0 -52
- data/spec/ffi/fixtures/BitmaskTest.c +0 -51
- data/spec/ffi/fixtures/BoolTest.c +0 -34
- data/spec/ffi/fixtures/BufferTest.c +0 -31
- data/spec/ffi/fixtures/ClosureTest.c +0 -205
- data/spec/ffi/fixtures/EnumTest.c +0 -51
- data/spec/ffi/fixtures/FunctionTest.c +0 -142
- data/spec/ffi/fixtures/GNUmakefile +0 -149
- data/spec/ffi/fixtures/GlobalVariable.c +0 -62
- data/spec/ffi/fixtures/LastErrorTest.c +0 -21
- data/spec/ffi/fixtures/NumberTest.c +0 -132
- data/spec/ffi/fixtures/PipeHelper.h +0 -21
- data/spec/ffi/fixtures/PipeHelperPosix.c +0 -41
- data/spec/ffi/fixtures/PipeHelperWindows.c +0 -72
- data/spec/ffi/fixtures/PointerTest.c +0 -63
- data/spec/ffi/fixtures/ReferenceTest.c +0 -23
- data/spec/ffi/fixtures/StringTest.c +0 -34
- data/spec/ffi/fixtures/StructTest.c +0 -243
- data/spec/ffi/fixtures/UnionTest.c +0 -43
- data/spec/ffi/fixtures/VariadicTest.c +0 -99
- data/spec/ffi/fixtures/classes.rb +0 -438
- data/spec/ffi/function_spec.rb +0 -97
- data/spec/ffi/io_spec.rb +0 -16
- data/spec/ffi/library_spec.rb +0 -286
- data/spec/ffi/long_double.rb +0 -30
- data/spec/ffi/managed_struct_spec.rb +0 -68
- data/spec/ffi/memorypointer_spec.rb +0 -78
- data/spec/ffi/number_spec.rb +0 -247
- data/spec/ffi/platform_spec.rb +0 -114
- data/spec/ffi/pointer_spec.rb +0 -285
- data/spec/ffi/rbx/attach_function_spec.rb +0 -34
- data/spec/ffi/rbx/memory_pointer_spec.rb +0 -198
- data/spec/ffi/rbx/spec_helper.rb +0 -6
- data/spec/ffi/rbx/struct_spec.rb +0 -18
- data/spec/ffi/spec_helper.rb +0 -93
- data/spec/ffi/string_spec.rb +0 -118
- data/spec/ffi/strptr_spec.rb +0 -50
- data/spec/ffi/struct_by_ref_spec.rb +0 -43
- data/spec/ffi/struct_callback_spec.rb +0 -69
- data/spec/ffi/struct_initialize_spec.rb +0 -35
- data/spec/ffi/struct_packed_spec.rb +0 -50
- data/spec/ffi/struct_spec.rb +0 -882
- data/spec/ffi/typedef_spec.rb +0 -91
- data/spec/ffi/union_spec.rb +0 -67
- data/spec/ffi/variadic_spec.rb +0 -132
- data/spec/spec.opts +0 -4
data/ext/ffi_c/DataConverter.c
DELETED
@@ -1,91 +0,0 @@
|
|
1
|
-
|
2
|
-
#include <ruby.h>
|
3
|
-
|
4
|
-
#include <ffi.h>
|
5
|
-
#include "rbffi.h"
|
6
|
-
|
7
|
-
#include "Type.h"
|
8
|
-
#include "MappedType.h"
|
9
|
-
|
10
|
-
|
11
|
-
VALUE rbffi_DataConverterClass = Qnil;
|
12
|
-
static ID id_native_type_ivar;
|
13
|
-
|
14
|
-
/*
|
15
|
-
* Get native type.
|
16
|
-
* @overload native_type(type)
|
17
|
-
* @param [String, Symbol, Type] type
|
18
|
-
* @return [Type]
|
19
|
-
* Get native type from +type+.
|
20
|
-
* @overload native_type
|
21
|
-
* @raise {NotImplementedError} This method must be overriden.
|
22
|
-
*/
|
23
|
-
static VALUE
|
24
|
-
conv_native_type(int argc, VALUE* argv, VALUE self)
|
25
|
-
{
|
26
|
-
if (argc == 0) {
|
27
|
-
if (!rb_ivar_defined(self, id_native_type_ivar)) {
|
28
|
-
rb_raise(rb_eNotImpError, "native_type method not overridden and no native_type set");
|
29
|
-
}
|
30
|
-
|
31
|
-
return rb_ivar_get(self, id_native_type_ivar);
|
32
|
-
|
33
|
-
} else if (argc == 1) {
|
34
|
-
VALUE type = rbffi_Type_Find(argv[0]);
|
35
|
-
|
36
|
-
rb_ivar_set(self, id_native_type_ivar, type);
|
37
|
-
|
38
|
-
return type;
|
39
|
-
|
40
|
-
} else {
|
41
|
-
rb_raise(rb_eArgError, "incorrect arguments");
|
42
|
-
}
|
43
|
-
}
|
44
|
-
|
45
|
-
/*
|
46
|
-
* call-seq: to_native(value, ctx)
|
47
|
-
* @param value
|
48
|
-
* @param ctx
|
49
|
-
* @return [value]
|
50
|
-
* Convert to a native type.
|
51
|
-
*/
|
52
|
-
static VALUE
|
53
|
-
conv_to_native(VALUE self, VALUE value, VALUE ctx)
|
54
|
-
{
|
55
|
-
return value;
|
56
|
-
}
|
57
|
-
|
58
|
-
/*
|
59
|
-
* call-seq: from_native(value, ctx)
|
60
|
-
* @param value
|
61
|
-
* @param ctx
|
62
|
-
* @return [value]
|
63
|
-
* Convert from a native type.
|
64
|
-
*/
|
65
|
-
static VALUE
|
66
|
-
conv_from_native(VALUE self, VALUE value, VALUE ctx)
|
67
|
-
{
|
68
|
-
return value;
|
69
|
-
}
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
void
|
74
|
-
rbffi_DataConverter_Init(VALUE moduleFFI)
|
75
|
-
{
|
76
|
-
/*
|
77
|
-
* Document-module: FFI::DataConverter
|
78
|
-
* This module is used to extend somes classes and give then a common API.
|
79
|
-
*
|
80
|
-
* Most of methods defined here must be overriden.
|
81
|
-
*/
|
82
|
-
rbffi_DataConverterClass = rb_define_module_under(moduleFFI, "DataConverter");
|
83
|
-
|
84
|
-
rb_define_method(rbffi_DataConverterClass, "native_type", conv_native_type, -1);
|
85
|
-
rb_define_method(rbffi_DataConverterClass, "to_native", conv_to_native, 2);
|
86
|
-
rb_define_method(rbffi_DataConverterClass, "from_native", conv_from_native, 2);
|
87
|
-
|
88
|
-
id_native_type_ivar = rb_intern("@native_type");
|
89
|
-
}
|
90
|
-
|
91
|
-
|
data/ext/ffi_c/DynamicLibrary.c
DELETED
@@ -1,339 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Copyright (c) 2008-2010 Wayne Meissner
|
3
|
-
*
|
4
|
-
* Copyright (c) 2008-2013, Ruby FFI project contributors
|
5
|
-
* All rights reserved.
|
6
|
-
*
|
7
|
-
* Redistribution and use in source and binary forms, with or without
|
8
|
-
* modification, are permitted provided that the following conditions are met:
|
9
|
-
* * Redistributions of source code must retain the above copyright
|
10
|
-
* notice, this list of conditions and the following disclaimer.
|
11
|
-
* * Redistributions in binary form must reproduce the above copyright
|
12
|
-
* notice, this list of conditions and the following disclaimer in the
|
13
|
-
* documentation and/or other materials provided with the distribution.
|
14
|
-
* * Neither the name of the Ruby FFI project nor the
|
15
|
-
* names of its contributors may be used to endorse or promote products
|
16
|
-
* derived from this software without specific prior written permission.
|
17
|
-
*
|
18
|
-
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
19
|
-
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
20
|
-
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
21
|
-
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
22
|
-
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
23
|
-
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
24
|
-
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
25
|
-
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
26
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
27
|
-
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
28
|
-
*/
|
29
|
-
|
30
|
-
#include <sys/types.h>
|
31
|
-
#include <stdio.h>
|
32
|
-
#ifndef _MSC_VER
|
33
|
-
# include <stdint.h>
|
34
|
-
#endif
|
35
|
-
#if (defined(_WIN32) || defined(__WIN32__)) && !defined(__CYGWIN__)
|
36
|
-
# include <winsock2.h>
|
37
|
-
# define _WINSOCKAPI_
|
38
|
-
# include <windows.h>
|
39
|
-
# include <shlwapi.h>
|
40
|
-
#else
|
41
|
-
# include <dlfcn.h>
|
42
|
-
#endif
|
43
|
-
#include <ruby.h>
|
44
|
-
#if defined(_MSC_VER) && !defined(INT8_MIN)
|
45
|
-
# include "win32/stdint.h"
|
46
|
-
#endif
|
47
|
-
|
48
|
-
#include <ffi.h>
|
49
|
-
|
50
|
-
#include "rbffi.h"
|
51
|
-
#include "compat.h"
|
52
|
-
#include "AbstractMemory.h"
|
53
|
-
#include "Pointer.h"
|
54
|
-
#include "DynamicLibrary.h"
|
55
|
-
|
56
|
-
typedef struct LibrarySymbol_ {
|
57
|
-
Pointer base;
|
58
|
-
VALUE library;
|
59
|
-
VALUE name;
|
60
|
-
} LibrarySymbol;
|
61
|
-
|
62
|
-
static VALUE library_initialize(VALUE self, VALUE libname, VALUE libflags);
|
63
|
-
static void library_free(Library* lib);
|
64
|
-
|
65
|
-
|
66
|
-
static VALUE symbol_allocate(VALUE klass);
|
67
|
-
static VALUE symbol_new(VALUE library, void* address, VALUE name);
|
68
|
-
static void symbol_mark(LibrarySymbol* sym);
|
69
|
-
|
70
|
-
static VALUE LibraryClass = Qnil, SymbolClass = Qnil;
|
71
|
-
|
72
|
-
#if (defined(_WIN32) || defined(__WIN32__)) && !defined(__CYGWIN__)
|
73
|
-
static void* dl_open(const char* name, int flags);
|
74
|
-
static void dl_error(char* buf, int size);
|
75
|
-
#define dl_sym(handle, name) GetProcAddress(handle, name)
|
76
|
-
#define dl_close(handle) FreeLibrary(handle)
|
77
|
-
#else
|
78
|
-
# define dl_open(name, flags) dlopen(name, flags != 0 ? flags : RTLD_LAZY)
|
79
|
-
# define dl_error(buf, size) do { snprintf(buf, size, "%s", dlerror()); } while(0)
|
80
|
-
# define dl_sym(handle, name) dlsym(handle, name)
|
81
|
-
# define dl_close(handle) dlclose(handle)
|
82
|
-
#endif
|
83
|
-
|
84
|
-
static VALUE
|
85
|
-
library_allocate(VALUE klass)
|
86
|
-
{
|
87
|
-
Library* library;
|
88
|
-
return Data_Make_Struct(klass, Library, NULL, library_free, library);
|
89
|
-
}
|
90
|
-
|
91
|
-
/*
|
92
|
-
* call-seq: DynamicLibrary.open(libname, libflags)
|
93
|
-
* @param libname (see #initialize)
|
94
|
-
* @param libflags (see #initialize)
|
95
|
-
* @return [FFI::DynamicLibrary]
|
96
|
-
* @raise {LoadError} if +libname+ cannot be opened
|
97
|
-
* Open a library.
|
98
|
-
*/
|
99
|
-
static VALUE
|
100
|
-
library_open(VALUE klass, VALUE libname, VALUE libflags)
|
101
|
-
{
|
102
|
-
return library_initialize(library_allocate(klass), libname, libflags);
|
103
|
-
}
|
104
|
-
|
105
|
-
/*
|
106
|
-
* call-seq: initialize(libname, libflags)
|
107
|
-
* @param [String] libname name of library to open
|
108
|
-
* @param [Fixnum] libflags flags for library to open
|
109
|
-
* @return [FFI::DynamicLibrary]
|
110
|
-
* @raise {LoadError} if +libname+ cannot be opened
|
111
|
-
* A new DynamicLibrary instance.
|
112
|
-
*/
|
113
|
-
static VALUE
|
114
|
-
library_initialize(VALUE self, VALUE libname, VALUE libflags)
|
115
|
-
{
|
116
|
-
Library* library;
|
117
|
-
int flags;
|
118
|
-
|
119
|
-
Check_Type(libflags, T_FIXNUM);
|
120
|
-
|
121
|
-
Data_Get_Struct(self, Library, library);
|
122
|
-
flags = libflags != Qnil ? NUM2UINT(libflags) : 0;
|
123
|
-
|
124
|
-
library->handle = dl_open(libname != Qnil ? StringValueCStr(libname) : NULL, flags);
|
125
|
-
if (library->handle == NULL) {
|
126
|
-
char errmsg[1024];
|
127
|
-
dl_error(errmsg, sizeof(errmsg));
|
128
|
-
rb_raise(rb_eLoadError, "Could not open library '%s': %s",
|
129
|
-
libname != Qnil ? StringValueCStr(libname) : "[current process]",
|
130
|
-
errmsg);
|
131
|
-
}
|
132
|
-
#ifdef __CYGWIN__
|
133
|
-
// On Cygwin 1.7.17 "dlsym(dlopen(0,0), 'getpid')" fails. (dlerror: "No such process")
|
134
|
-
// As a workaround we can use "dlsym(RTLD_DEFAULT, 'getpid')" instead.
|
135
|
-
// Since 0 == RTLD_DEFAULT we won't call dl_close later.
|
136
|
-
if (libname == Qnil) {
|
137
|
-
dl_close(library->handle);
|
138
|
-
library->handle = RTLD_DEFAULT;
|
139
|
-
}
|
140
|
-
#endif
|
141
|
-
rb_iv_set(self, "@name", libname != Qnil ? libname : rb_str_new2("[current process]"));
|
142
|
-
return self;
|
143
|
-
}
|
144
|
-
|
145
|
-
static VALUE
|
146
|
-
library_dlsym(VALUE self, VALUE name)
|
147
|
-
{
|
148
|
-
Library* library;
|
149
|
-
void* address = NULL;
|
150
|
-
Check_Type(name, T_STRING);
|
151
|
-
|
152
|
-
Data_Get_Struct(self, Library, library);
|
153
|
-
address = dl_sym(library->handle, StringValueCStr(name));
|
154
|
-
|
155
|
-
return address != NULL ? symbol_new(self, address, name) : Qnil;
|
156
|
-
}
|
157
|
-
|
158
|
-
/*
|
159
|
-
* call-seq: last_error
|
160
|
-
* @return [String] library's last error string
|
161
|
-
*/
|
162
|
-
static VALUE
|
163
|
-
library_dlerror(VALUE self)
|
164
|
-
{
|
165
|
-
char errmsg[1024];
|
166
|
-
dl_error(errmsg, sizeof(errmsg));
|
167
|
-
return rb_tainted_str_new2(errmsg);
|
168
|
-
}
|
169
|
-
|
170
|
-
static void
|
171
|
-
library_free(Library* library)
|
172
|
-
{
|
173
|
-
/* dlclose() on MacOS tends to segfault - avoid it */
|
174
|
-
#ifndef __APPLE__
|
175
|
-
if (library->handle != NULL) {
|
176
|
-
dl_close(library->handle);
|
177
|
-
}
|
178
|
-
#endif
|
179
|
-
xfree(library);
|
180
|
-
}
|
181
|
-
|
182
|
-
#if (defined(_WIN32) || defined(__WIN32__)) && !defined(__CYGWIN__)
|
183
|
-
static void*
|
184
|
-
dl_open(const char* name, int flags)
|
185
|
-
{
|
186
|
-
if (name == NULL) {
|
187
|
-
return GetModuleHandle(NULL);
|
188
|
-
} else {
|
189
|
-
DWORD dwFlags = PathIsRelativeA(name) ? 0 : LOAD_WITH_ALTERED_SEARCH_PATH;
|
190
|
-
return LoadLibraryExA(name, NULL, dwFlags);
|
191
|
-
}
|
192
|
-
}
|
193
|
-
|
194
|
-
static void
|
195
|
-
dl_error(char* buf, int size)
|
196
|
-
{
|
197
|
-
FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(),
|
198
|
-
0, buf, size, NULL);
|
199
|
-
}
|
200
|
-
#endif
|
201
|
-
|
202
|
-
static VALUE
|
203
|
-
symbol_allocate(VALUE klass)
|
204
|
-
{
|
205
|
-
LibrarySymbol* sym;
|
206
|
-
VALUE obj = Data_Make_Struct(klass, LibrarySymbol, NULL, -1, sym);
|
207
|
-
sym->name = Qnil;
|
208
|
-
sym->library = Qnil;
|
209
|
-
sym->base.rbParent = Qnil;
|
210
|
-
|
211
|
-
return obj;
|
212
|
-
}
|
213
|
-
|
214
|
-
|
215
|
-
/*
|
216
|
-
* call-seq: initialize_copy(other)
|
217
|
-
* @param [Object] other
|
218
|
-
* @return [nil]
|
219
|
-
* DO NOT CALL THIS METHOD
|
220
|
-
*/
|
221
|
-
static VALUE
|
222
|
-
symbol_initialize_copy(VALUE self, VALUE other)
|
223
|
-
{
|
224
|
-
rb_raise(rb_eRuntimeError, "cannot duplicate symbol");
|
225
|
-
return Qnil;
|
226
|
-
}
|
227
|
-
|
228
|
-
static VALUE
|
229
|
-
symbol_new(VALUE library, void* address, VALUE name)
|
230
|
-
{
|
231
|
-
LibrarySymbol* sym;
|
232
|
-
VALUE obj = Data_Make_Struct(SymbolClass, LibrarySymbol, symbol_mark, -1, sym);
|
233
|
-
|
234
|
-
sym->base.memory.address = address;
|
235
|
-
sym->base.memory.size = LONG_MAX;
|
236
|
-
sym->base.memory.typeSize = 1;
|
237
|
-
sym->base.memory.flags = MEM_RD | MEM_WR;
|
238
|
-
sym->library = library;
|
239
|
-
sym->name = name;
|
240
|
-
|
241
|
-
return obj;
|
242
|
-
}
|
243
|
-
|
244
|
-
static void
|
245
|
-
symbol_mark(LibrarySymbol* sym)
|
246
|
-
{
|
247
|
-
rb_gc_mark(sym->library);
|
248
|
-
rb_gc_mark(sym->name);
|
249
|
-
}
|
250
|
-
|
251
|
-
/*
|
252
|
-
* call-seq: inspect
|
253
|
-
* @return [String]
|
254
|
-
* Inspect.
|
255
|
-
*/
|
256
|
-
static VALUE
|
257
|
-
symbol_inspect(VALUE self)
|
258
|
-
{
|
259
|
-
LibrarySymbol* sym;
|
260
|
-
char buf[256];
|
261
|
-
|
262
|
-
Data_Get_Struct(self, LibrarySymbol, sym);
|
263
|
-
snprintf(buf, sizeof(buf), "#<FFI::Library::Symbol name=%s address=%p>",
|
264
|
-
StringValueCStr(sym->name), sym->base.memory.address);
|
265
|
-
return rb_str_new2(buf);
|
266
|
-
}
|
267
|
-
|
268
|
-
void
|
269
|
-
rbffi_DynamicLibrary_Init(VALUE moduleFFI)
|
270
|
-
{
|
271
|
-
/*
|
272
|
-
* Document-class: FFI::DynamicLibrary
|
273
|
-
*/
|
274
|
-
LibraryClass = rb_define_class_under(moduleFFI, "DynamicLibrary", rb_cObject);
|
275
|
-
rb_global_variable(&LibraryClass);
|
276
|
-
/*
|
277
|
-
* Document-class: FFI::DynamicLibrary::Symbol < FFI::Pointer
|
278
|
-
*
|
279
|
-
* An instance of this class represents a library symbol. It may be a {Pointer pointer} to
|
280
|
-
* a function or to a variable.
|
281
|
-
*/
|
282
|
-
SymbolClass = rb_define_class_under(LibraryClass, "Symbol", rbffi_PointerClass);
|
283
|
-
rb_global_variable(&SymbolClass);
|
284
|
-
|
285
|
-
/*
|
286
|
-
* Document-const: FFI::NativeLibrary
|
287
|
-
* Backward compatibility for FFI::DynamicLibrary
|
288
|
-
*/
|
289
|
-
rb_define_const(moduleFFI, "NativeLibrary", LibraryClass); /* backwards compat library */
|
290
|
-
rb_define_alloc_func(LibraryClass, library_allocate);
|
291
|
-
rb_define_singleton_method(LibraryClass, "open", library_open, 2);
|
292
|
-
rb_define_singleton_method(LibraryClass, "last_error", library_dlerror, 0);
|
293
|
-
rb_define_method(LibraryClass, "initialize", library_initialize, 2);
|
294
|
-
/*
|
295
|
-
* Document-method: find_symbol
|
296
|
-
* call-seq: find_symbol(name)
|
297
|
-
* @param [String] name library symbol's name
|
298
|
-
* @return [FFI::DynamicLibrary::Symbol] library symbol
|
299
|
-
*/
|
300
|
-
rb_define_method(LibraryClass, "find_symbol", library_dlsym, 1);
|
301
|
-
/*
|
302
|
-
* Document-method: find_function
|
303
|
-
* call-seq: find_function(name)
|
304
|
-
* @param [String] name library function's name
|
305
|
-
* @return [FFI::DynamicLibrary::Symbol] library function symbol
|
306
|
-
*/
|
307
|
-
rb_define_method(LibraryClass, "find_function", library_dlsym, 1);
|
308
|
-
/*
|
309
|
-
* Document-method: find_variable
|
310
|
-
* call-seq: find_variable(name)
|
311
|
-
* @param [String] name library variable's name
|
312
|
-
* @return [FFI::DynamicLibrary::Symbol] library variable symbol
|
313
|
-
*/
|
314
|
-
rb_define_method(LibraryClass, "find_variable", library_dlsym, 1);
|
315
|
-
rb_define_method(LibraryClass, "last_error", library_dlerror, 0);
|
316
|
-
rb_define_attr(LibraryClass, "name", 1, 0);
|
317
|
-
|
318
|
-
rb_define_alloc_func(SymbolClass, symbol_allocate);
|
319
|
-
rb_undef_method(SymbolClass, "new");
|
320
|
-
rb_define_method(SymbolClass, "inspect", symbol_inspect, 0);
|
321
|
-
rb_define_method(SymbolClass, "initialize_copy", symbol_initialize_copy, 1);
|
322
|
-
|
323
|
-
#define DEF(x) rb_define_const(LibraryClass, "RTLD_" #x, UINT2NUM(RTLD_##x))
|
324
|
-
DEF(LAZY);
|
325
|
-
DEF(NOW);
|
326
|
-
DEF(GLOBAL);
|
327
|
-
DEF(LOCAL);
|
328
|
-
DEF(NOLOAD);
|
329
|
-
DEF(NODELETE);
|
330
|
-
DEF(FIRST);
|
331
|
-
DEF(DEEPBIND);
|
332
|
-
DEF(MEMBER);
|
333
|
-
DEF(BINDING_MASK);
|
334
|
-
DEF(LOCATION_MASK);
|
335
|
-
DEF(ALL_MASK);
|
336
|
-
#undef DEF
|
337
|
-
|
338
|
-
}
|
339
|
-
|
data/ext/ffi_c/DynamicLibrary.h
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Copyright (c) 2008-2010 Wayne Meissner
|
3
|
-
* Copyright (c) 2008-2013, Ruby FFI project contributors
|
4
|
-
* All rights reserved.
|
5
|
-
*
|
6
|
-
* Redistribution and use in source and binary forms, with or without
|
7
|
-
* modification, are permitted provided that the following conditions are met:
|
8
|
-
* * Redistributions of source code must retain the above copyright
|
9
|
-
* notice, this list of conditions and the following disclaimer.
|
10
|
-
* * Redistributions in binary form must reproduce the above copyright
|
11
|
-
* notice, this list of conditions and the following disclaimer in the
|
12
|
-
* documentation and/or other materials provided with the distribution.
|
13
|
-
* * Neither the name of the Ruby FFI project nor the
|
14
|
-
* names of its contributors may be used to endorse or promote products
|
15
|
-
* derived from this software without specific prior written permission.
|
16
|
-
*
|
17
|
-
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18
|
-
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19
|
-
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20
|
-
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21
|
-
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22
|
-
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23
|
-
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24
|
-
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25
|
-
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26
|
-
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
|
-
*/
|
28
|
-
|
29
|
-
#ifndef _LIBRARY_H
|
30
|
-
#define _LIBRARY_H
|
31
|
-
|
32
|
-
#ifdef __cplusplus
|
33
|
-
extern "C" {
|
34
|
-
#endif
|
35
|
-
|
36
|
-
/* if these aren't defined (eg. windows), we need sensible defaults */
|
37
|
-
#ifndef RTLD_LAZY
|
38
|
-
#define RTLD_LAZY 1
|
39
|
-
#endif
|
40
|
-
|
41
|
-
#ifndef RTLD_NOW
|
42
|
-
#define RTLD_NOW 2
|
43
|
-
#endif
|
44
|
-
|
45
|
-
#ifndef RTLD_LOCAL
|
46
|
-
#define RTLD_LOCAL 4
|
47
|
-
#endif
|
48
|
-
|
49
|
-
#ifndef RTLD_GLOBAL
|
50
|
-
#define RTLD_GLOBAL 8
|
51
|
-
#endif
|
52
|
-
|
53
|
-
/* If these aren't defined, they're not supported so define as 0 */
|
54
|
-
#ifndef RTLD_NOLOAD
|
55
|
-
#define RTLD_NOLOAD 0
|
56
|
-
#endif
|
57
|
-
|
58
|
-
#ifndef RTLD_NODELETE
|
59
|
-
#define RTLD_NODELETE 0
|
60
|
-
#endif
|
61
|
-
|
62
|
-
#ifndef RTLD_FIRST
|
63
|
-
#define RTLD_FIRST 0
|
64
|
-
#endif
|
65
|
-
|
66
|
-
#ifndef RTLD_DEEPBIND
|
67
|
-
#define RTLD_DEEPBIND 0
|
68
|
-
#endif
|
69
|
-
|
70
|
-
#ifndef RTLD_MEMBER
|
71
|
-
#define RTLD_MEMBER 0
|
72
|
-
#endif
|
73
|
-
|
74
|
-
/* convenience */
|
75
|
-
#ifndef RTLD_BINDING_MASK
|
76
|
-
#define RTLD_BINDING_MASK (RTLD_LAZY | RTLD_NOW)
|
77
|
-
#endif
|
78
|
-
|
79
|
-
#ifndef RTLD_LOCATION_MASK
|
80
|
-
#define RTLD_LOCATION_MASK (RTLD_LOCAL | RTLD_GLOBAL)
|
81
|
-
#endif
|
82
|
-
|
83
|
-
#ifndef RTLD_ALL_MASK
|
84
|
-
#define RTLD_ALL_MASK (RTLD_BINDING_MASK | RTLD_LOCATION_MASK | RTLD_NOLOAD | RTLD_NODELETE | RTLD_FIRST | RTLD_DEEPBIND | RTLD_MEMBER)
|
85
|
-
#endif
|
86
|
-
|
87
|
-
typedef struct Library {
|
88
|
-
void* handle;
|
89
|
-
} Library;
|
90
|
-
|
91
|
-
extern void rbffi_DynamicLibrary_Init(VALUE ffiModule);
|
92
|
-
|
93
|
-
#ifdef __cplusplus
|
94
|
-
}
|
95
|
-
#endif
|
96
|
-
|
97
|
-
#endif /* _LIBRARY_H */
|
98
|
-
|