ffi 0.1.0

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.

Files changed (279) hide show
  1. data/LICENSE +51 -0
  2. data/README +0 -0
  3. data/Rakefile +90 -0
  4. data/ext/AbstractMemory.c +254 -0
  5. data/ext/AbstractMemory.h +36 -0
  6. data/ext/Buffer.c +94 -0
  7. data/ext/Callback.c +240 -0
  8. data/ext/Callback.h +47 -0
  9. data/ext/Invoker.c +269 -0
  10. data/ext/MemoryPointer.c +164 -0
  11. data/ext/MemoryPointer.h +25 -0
  12. data/ext/Platform.c +41 -0
  13. data/ext/Platform.h +23 -0
  14. data/ext/Types.c +65 -0
  15. data/ext/Types.h +51 -0
  16. data/ext/extconf.rb +13 -0
  17. data/ext/ffi.c +54 -0
  18. data/ext/ffi.mk +24 -0
  19. data/ext/libffi.darwin.mk +44 -0
  20. data/ext/libffi.mk +10 -0
  21. data/ext/libffi/ChangeLog +3243 -0
  22. data/ext/libffi/ChangeLog.libffi +347 -0
  23. data/ext/libffi/ChangeLog.libgcj +40 -0
  24. data/ext/libffi/ChangeLog.v1 +764 -0
  25. data/ext/libffi/LICENSE +21 -0
  26. data/ext/libffi/Makefile.am +177 -0
  27. data/ext/libffi/Makefile.in +1640 -0
  28. data/ext/libffi/README +328 -0
  29. data/ext/libffi/TODO +1 -0
  30. data/ext/libffi/acinclude.m4 +92 -0
  31. data/ext/libffi/aclocal.m4 +7516 -0
  32. data/ext/libffi/compile +142 -0
  33. data/ext/libffi/config.guess +1516 -0
  34. data/ext/libffi/config.sub +1626 -0
  35. data/ext/libffi/configure +24414 -0
  36. data/ext/libffi/configure.ac +365 -0
  37. data/ext/libffi/configure.host +11 -0
  38. data/ext/libffi/depcomp +584 -0
  39. data/ext/libffi/doc/libffi.info +533 -0
  40. data/ext/libffi/doc/libffi.texi +541 -0
  41. data/ext/libffi/doc/stamp-vti +4 -0
  42. data/ext/libffi/doc/version.texi +4 -0
  43. data/ext/libffi/fficonfig.h.in +160 -0
  44. data/ext/libffi/include/Makefile.am +9 -0
  45. data/ext/libffi/include/Makefile.in +422 -0
  46. data/ext/libffi/include/ffi.h.in +393 -0
  47. data/ext/libffi/include/ffi_common.h +98 -0
  48. data/ext/libffi/install-sh +323 -0
  49. data/ext/libffi/libffi.pc.in +10 -0
  50. data/ext/libffi/libtool-version +29 -0
  51. data/ext/libffi/ltcf-c.sh +861 -0
  52. data/ext/libffi/ltcf-cxx.sh +1069 -0
  53. data/ext/libffi/ltcf-gcj.sh +700 -0
  54. data/ext/libffi/ltconfig +2862 -0
  55. data/ext/libffi/ltmain.sh +6930 -0
  56. data/ext/libffi/man/Makefile.am +8 -0
  57. data/ext/libffi/man/Makefile.in +395 -0
  58. data/ext/libffi/man/ffi.3 +31 -0
  59. data/ext/libffi/man/ffi_call.3 +103 -0
  60. data/ext/libffi/man/ffi_prep_cif.3 +66 -0
  61. data/ext/libffi/mdate-sh +201 -0
  62. data/ext/libffi/missing +353 -0
  63. data/ext/libffi/mkinstalldirs +158 -0
  64. data/ext/libffi/src/alpha/ffi.c +284 -0
  65. data/ext/libffi/src/alpha/ffitarget.h +48 -0
  66. data/ext/libffi/src/alpha/osf.S +366 -0
  67. data/ext/libffi/src/arm/ffi.c +309 -0
  68. data/ext/libffi/src/arm/ffitarget.h +49 -0
  69. data/ext/libffi/src/arm/sysv.S +299 -0
  70. data/ext/libffi/src/closures.c +596 -0
  71. data/ext/libffi/src/cris/ffi.c +383 -0
  72. data/ext/libffi/src/cris/ffitarget.h +51 -0
  73. data/ext/libffi/src/cris/sysv.S +215 -0
  74. data/ext/libffi/src/debug.c +59 -0
  75. data/ext/libffi/src/dlmalloc.c +5099 -0
  76. data/ext/libffi/src/frv/eabi.S +128 -0
  77. data/ext/libffi/src/frv/ffi.c +292 -0
  78. data/ext/libffi/src/frv/ffitarget.h +61 -0
  79. data/ext/libffi/src/ia64/ffi.c +580 -0
  80. data/ext/libffi/src/ia64/ffitarget.h +50 -0
  81. data/ext/libffi/src/ia64/ia64_flags.h +40 -0
  82. data/ext/libffi/src/ia64/unix.S +560 -0
  83. data/ext/libffi/src/java_raw_api.c +359 -0
  84. data/ext/libffi/src/m32r/ffi.c +232 -0
  85. data/ext/libffi/src/m32r/ffitarget.h +48 -0
  86. data/ext/libffi/src/m32r/sysv.S +121 -0
  87. data/ext/libffi/src/m68k/ffi.c +278 -0
  88. data/ext/libffi/src/m68k/ffitarget.h +49 -0
  89. data/ext/libffi/src/m68k/sysv.S +234 -0
  90. data/ext/libffi/src/mips/ffi.c +926 -0
  91. data/ext/libffi/src/mips/ffitarget.h +202 -0
  92. data/ext/libffi/src/mips/n32.S +534 -0
  93. data/ext/libffi/src/mips/o32.S +381 -0
  94. data/ext/libffi/src/pa/ffi.c +709 -0
  95. data/ext/libffi/src/pa/ffitarget.h +77 -0
  96. data/ext/libffi/src/pa/hpux32.S +368 -0
  97. data/ext/libffi/src/pa/linux.S +357 -0
  98. data/ext/libffi/src/powerpc/aix.S +225 -0
  99. data/ext/libffi/src/powerpc/aix_closure.S +247 -0
  100. data/ext/libffi/src/powerpc/asm.h +125 -0
  101. data/ext/libffi/src/powerpc/darwin.S +245 -0
  102. data/ext/libffi/src/powerpc/darwin_closure.S +317 -0
  103. data/ext/libffi/src/powerpc/ffi.c +1429 -0
  104. data/ext/libffi/src/powerpc/ffi_darwin.c +800 -0
  105. data/ext/libffi/src/powerpc/ffitarget.h +118 -0
  106. data/ext/libffi/src/powerpc/linux64.S +187 -0
  107. data/ext/libffi/src/powerpc/linux64_closure.S +236 -0
  108. data/ext/libffi/src/powerpc/ppc_closure.S +327 -0
  109. data/ext/libffi/src/powerpc/sysv.S +230 -0
  110. data/ext/libffi/src/prep_cif.c +174 -0
  111. data/ext/libffi/src/raw_api.c +254 -0
  112. data/ext/libffi/src/s390/ffi.c +780 -0
  113. data/ext/libffi/src/s390/ffitarget.h +60 -0
  114. data/ext/libffi/src/s390/sysv.S +434 -0
  115. data/ext/libffi/src/sh/ffi.c +716 -0
  116. data/ext/libffi/src/sh/ffitarget.h +49 -0
  117. data/ext/libffi/src/sh/sysv.S +850 -0
  118. data/ext/libffi/src/sh64/ffi.c +453 -0
  119. data/ext/libffi/src/sh64/ffitarget.h +53 -0
  120. data/ext/libffi/src/sh64/sysv.S +530 -0
  121. data/ext/libffi/src/sparc/ffi.c +610 -0
  122. data/ext/libffi/src/sparc/ffitarget.h +66 -0
  123. data/ext/libffi/src/sparc/v8.S +272 -0
  124. data/ext/libffi/src/sparc/v9.S +307 -0
  125. data/ext/libffi/src/types.c +77 -0
  126. data/ext/libffi/src/x86/darwin.S +443 -0
  127. data/ext/libffi/src/x86/darwin64.S +416 -0
  128. data/ext/libffi/src/x86/ffi.c +475 -0
  129. data/ext/libffi/src/x86/ffi64.c +572 -0
  130. data/ext/libffi/src/x86/ffitarget.h +90 -0
  131. data/ext/libffi/src/x86/freebsd.S +458 -0
  132. data/ext/libffi/src/x86/sysv.S +437 -0
  133. data/ext/libffi/src/x86/unix64.S +418 -0
  134. data/ext/libffi/src/x86/win32.S +391 -0
  135. data/ext/libffi/testsuite/Makefile.am +71 -0
  136. data/ext/libffi/testsuite/Makefile.in +447 -0
  137. data/ext/libffi/testsuite/config/default.exp +1 -0
  138. data/ext/libffi/testsuite/lib/libffi-dg.exp +289 -0
  139. data/ext/libffi/testsuite/lib/target-libpath.exp +263 -0
  140. data/ext/libffi/testsuite/lib/wrapper.exp +45 -0
  141. data/ext/libffi/testsuite/libffi.call/call.exp +36 -0
  142. data/ext/libffi/testsuite/libffi.call/closure_fn0.c +97 -0
  143. data/ext/libffi/testsuite/libffi.call/closure_fn1.c +89 -0
  144. data/ext/libffi/testsuite/libffi.call/closure_fn2.c +89 -0
  145. data/ext/libffi/testsuite/libffi.call/closure_fn3.c +90 -0
  146. data/ext/libffi/testsuite/libffi.call/closure_fn4.c +97 -0
  147. data/ext/libffi/testsuite/libffi.call/closure_fn5.c +99 -0
  148. data/ext/libffi/testsuite/libffi.call/closure_fn6.c +98 -0
  149. data/ext/libffi/testsuite/libffi.call/closure_stdcall.c +72 -0
  150. data/ext/libffi/testsuite/libffi.call/cls_12byte.c +102 -0
  151. data/ext/libffi/testsuite/libffi.call/cls_16byte.c +103 -0
  152. data/ext/libffi/testsuite/libffi.call/cls_18byte.c +104 -0
  153. data/ext/libffi/testsuite/libffi.call/cls_19byte.c +110 -0
  154. data/ext/libffi/testsuite/libffi.call/cls_1_1byte.c +97 -0
  155. data/ext/libffi/testsuite/libffi.call/cls_20byte.c +99 -0
  156. data/ext/libffi/testsuite/libffi.call/cls_20byte1.c +101 -0
  157. data/ext/libffi/testsuite/libffi.call/cls_24byte.c +121 -0
  158. data/ext/libffi/testsuite/libffi.call/cls_2byte.c +98 -0
  159. data/ext/libffi/testsuite/libffi.call/cls_3_1byte.c +103 -0
  160. data/ext/libffi/testsuite/libffi.call/cls_3byte1.c +98 -0
  161. data/ext/libffi/testsuite/libffi.call/cls_3byte2.c +98 -0
  162. data/ext/libffi/testsuite/libffi.call/cls_4_1byte.c +106 -0
  163. data/ext/libffi/testsuite/libffi.call/cls_4byte.c +98 -0
  164. data/ext/libffi/testsuite/libffi.call/cls_5_1_byte.c +117 -0
  165. data/ext/libffi/testsuite/libffi.call/cls_5byte.c +106 -0
  166. data/ext/libffi/testsuite/libffi.call/cls_64byte.c +132 -0
  167. data/ext/libffi/testsuite/libffi.call/cls_6_1_byte.c +121 -0
  168. data/ext/libffi/testsuite/libffi.call/cls_6byte.c +107 -0
  169. data/ext/libffi/testsuite/libffi.call/cls_7_1_byte.c +125 -0
  170. data/ext/libffi/testsuite/libffi.call/cls_7byte.c +105 -0
  171. data/ext/libffi/testsuite/libffi.call/cls_8byte.c +96 -0
  172. data/ext/libffi/testsuite/libffi.call/cls_9byte1.c +98 -0
  173. data/ext/libffi/testsuite/libffi.call/cls_9byte2.c +99 -0
  174. data/ext/libffi/testsuite/libffi.call/cls_align_double.c +101 -0
  175. data/ext/libffi/testsuite/libffi.call/cls_align_float.c +99 -0
  176. data/ext/libffi/testsuite/libffi.call/cls_align_longdouble.c +100 -0
  177. data/ext/libffi/testsuite/libffi.call/cls_align_pointer.c +101 -0
  178. data/ext/libffi/testsuite/libffi.call/cls_align_sint16.c +99 -0
  179. data/ext/libffi/testsuite/libffi.call/cls_align_sint32.c +99 -0
  180. data/ext/libffi/testsuite/libffi.call/cls_align_sint64.c +99 -0
  181. data/ext/libffi/testsuite/libffi.call/cls_align_uint16.c +99 -0
  182. data/ext/libffi/testsuite/libffi.call/cls_align_uint32.c +99 -0
  183. data/ext/libffi/testsuite/libffi.call/cls_align_uint64.c +100 -0
  184. data/ext/libffi/testsuite/libffi.call/cls_double.c +51 -0
  185. data/ext/libffi/testsuite/libffi.call/cls_float.c +51 -0
  186. data/ext/libffi/testsuite/libffi.call/cls_multi_schar.c +82 -0
  187. data/ext/libffi/testsuite/libffi.call/cls_multi_sshort.c +82 -0
  188. data/ext/libffi/testsuite/libffi.call/cls_multi_sshortchar.c +94 -0
  189. data/ext/libffi/testsuite/libffi.call/cls_multi_uchar.c +99 -0
  190. data/ext/libffi/testsuite/libffi.call/cls_multi_ushort.c +82 -0
  191. data/ext/libffi/testsuite/libffi.call/cls_multi_ushortchar.c +94 -0
  192. data/ext/libffi/testsuite/libffi.call/cls_schar.c +52 -0
  193. data/ext/libffi/testsuite/libffi.call/cls_sint.c +50 -0
  194. data/ext/libffi/testsuite/libffi.call/cls_sshort.c +50 -0
  195. data/ext/libffi/testsuite/libffi.call/cls_uchar.c +50 -0
  196. data/ext/libffi/testsuite/libffi.call/cls_uint.c +51 -0
  197. data/ext/libffi/testsuite/libffi.call/cls_ulonglong.c +54 -0
  198. data/ext/libffi/testsuite/libffi.call/cls_ushort.c +51 -0
  199. data/ext/libffi/testsuite/libffi.call/ffitest.h +86 -0
  200. data/ext/libffi/testsuite/libffi.call/float.c +59 -0
  201. data/ext/libffi/testsuite/libffi.call/float1.c +58 -0
  202. data/ext/libffi/testsuite/libffi.call/float2.c +57 -0
  203. data/ext/libffi/testsuite/libffi.call/float3.c +72 -0
  204. data/ext/libffi/testsuite/libffi.call/float4.c +62 -0
  205. data/ext/libffi/testsuite/libffi.call/many.c +69 -0
  206. data/ext/libffi/testsuite/libffi.call/many_win32.c +63 -0
  207. data/ext/libffi/testsuite/libffi.call/negint.c +53 -0
  208. data/ext/libffi/testsuite/libffi.call/nested_struct.c +160 -0
  209. data/ext/libffi/testsuite/libffi.call/nested_struct1.c +169 -0
  210. data/ext/libffi/testsuite/libffi.call/nested_struct10.c +141 -0
  211. data/ext/libffi/testsuite/libffi.call/nested_struct2.c +118 -0
  212. data/ext/libffi/testsuite/libffi.call/nested_struct3.c +119 -0
  213. data/ext/libffi/testsuite/libffi.call/nested_struct4.c +119 -0
  214. data/ext/libffi/testsuite/libffi.call/nested_struct5.c +120 -0
  215. data/ext/libffi/testsuite/libffi.call/nested_struct6.c +139 -0
  216. data/ext/libffi/testsuite/libffi.call/nested_struct7.c +119 -0
  217. data/ext/libffi/testsuite/libffi.call/nested_struct8.c +139 -0
  218. data/ext/libffi/testsuite/libffi.call/nested_struct9.c +139 -0
  219. data/ext/libffi/testsuite/libffi.call/problem1.c +98 -0
  220. data/ext/libffi/testsuite/libffi.call/promotion.c +59 -0
  221. data/ext/libffi/testsuite/libffi.call/pyobjc-tc.c +114 -0
  222. data/ext/libffi/testsuite/libffi.call/return_dbl.c +35 -0
  223. data/ext/libffi/testsuite/libffi.call/return_dbl1.c +43 -0
  224. data/ext/libffi/testsuite/libffi.call/return_dbl2.c +42 -0
  225. data/ext/libffi/testsuite/libffi.call/return_fl.c +35 -0
  226. data/ext/libffi/testsuite/libffi.call/return_fl1.c +36 -0
  227. data/ext/libffi/testsuite/libffi.call/return_fl2.c +49 -0
  228. data/ext/libffi/testsuite/libffi.call/return_fl3.c +42 -0
  229. data/ext/libffi/testsuite/libffi.call/return_ldl.c +34 -0
  230. data/ext/libffi/testsuite/libffi.call/return_ll.c +41 -0
  231. data/ext/libffi/testsuite/libffi.call/return_ll1.c +42 -0
  232. data/ext/libffi/testsuite/libffi.call/return_sc.c +36 -0
  233. data/ext/libffi/testsuite/libffi.call/return_sl.c +38 -0
  234. data/ext/libffi/testsuite/libffi.call/return_uc.c +38 -0
  235. data/ext/libffi/testsuite/libffi.call/return_ul.c +38 -0
  236. data/ext/libffi/testsuite/libffi.call/strlen.c +44 -0
  237. data/ext/libffi/testsuite/libffi.call/strlen_win32.c +44 -0
  238. data/ext/libffi/testsuite/libffi.call/struct1.c +65 -0
  239. data/ext/libffi/testsuite/libffi.call/struct2.c +67 -0
  240. data/ext/libffi/testsuite/libffi.call/struct3.c +59 -0
  241. data/ext/libffi/testsuite/libffi.call/struct4.c +63 -0
  242. data/ext/libffi/testsuite/libffi.call/struct5.c +65 -0
  243. data/ext/libffi/testsuite/libffi.call/struct6.c +64 -0
  244. data/ext/libffi/testsuite/libffi.call/struct7.c +74 -0
  245. data/ext/libffi/testsuite/libffi.call/struct8.c +80 -0
  246. data/ext/libffi/testsuite/libffi.call/struct9.c +67 -0
  247. data/ext/libffi/testsuite/libffi.special/ffitestcxx.h +86 -0
  248. data/ext/libffi/testsuite/libffi.special/special.exp +38 -0
  249. data/ext/libffi/testsuite/libffi.special/unwindtest.cc +123 -0
  250. data/ext/libffi/testsuite/libffi.special/unwindtest_ffi_call.cc +53 -0
  251. data/ext/libffi/texinfo.tex +7482 -0
  252. data/ext/rbffi.h +32 -0
  253. data/lib/ffi.rb +2 -0
  254. data/lib/ffi/buffer.rb +25 -0
  255. data/lib/ffi/callback.rb +10 -0
  256. data/lib/ffi/ffi.rb +259 -0
  257. data/lib/ffi/memorypointer.rb +169 -0
  258. data/lib/ffi/platform.rb +75 -0
  259. data/lib/ffi/struct.rb +263 -0
  260. data/nbproject/Makefile-Default.mk +54 -0
  261. data/nbproject/Makefile-impl.mk +123 -0
  262. data/nbproject/configurations.xml +169 -0
  263. data/nbproject/private/configurations.xml +22 -0
  264. data/nbproject/private/private.xml +7 -0
  265. data/nbproject/project.properties +0 -0
  266. data/nbproject/project.xml +11 -0
  267. data/samples/getlogin.rb +7 -0
  268. data/samples/getpid.rb +7 -0
  269. data/samples/gettimeofday.rb +13 -0
  270. data/samples/hello.rb +7 -0
  271. data/samples/qsort.rb +20 -0
  272. data/specs/buffer_spec.rb +141 -0
  273. data/specs/callback_spec.rb +31 -0
  274. data/specs/rbx/attach_function_spec.rb +26 -0
  275. data/specs/rbx/memory_pointer_spec.rb +108 -0
  276. data/specs/rbx/spec_helper.rb +1 -0
  277. data/specs/rbx/struct_spec.rb +13 -0
  278. data/specs/spec_helper.rb +2 -0
  279. metadata +359 -0
@@ -0,0 +1,8 @@
1
+ ## Process this with automake to create Makefile.in
2
+
3
+ AUTOMAKE_OPTIONS=foreign
4
+
5
+ EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3
6
+
7
+ man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3
8
+
@@ -0,0 +1,395 @@
1
+ # Makefile.in generated by automake 1.10 from Makefile.am.
2
+ # @configure_input@
3
+
4
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
5
+ # 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
6
+ # This Makefile.in is free software; the Free Software Foundation
7
+ # gives unlimited permission to copy and/or distribute it,
8
+ # with or without modifications, as long as this notice is preserved.
9
+
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
12
+ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13
+ # PARTICULAR PURPOSE.
14
+
15
+ @SET_MAKE@
16
+ VPATH = @srcdir@
17
+ pkgdatadir = $(datadir)/@PACKAGE@
18
+ pkglibdir = $(libdir)/@PACKAGE@
19
+ pkgincludedir = $(includedir)/@PACKAGE@
20
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
21
+ install_sh_DATA = $(install_sh) -c -m 644
22
+ install_sh_PROGRAM = $(install_sh) -c
23
+ install_sh_SCRIPT = $(install_sh) -c
24
+ INSTALL_HEADER = $(INSTALL_DATA)
25
+ transform = $(program_transform_name)
26
+ NORMAL_INSTALL = :
27
+ PRE_INSTALL = :
28
+ POST_INSTALL = :
29
+ NORMAL_UNINSTALL = :
30
+ PRE_UNINSTALL = :
31
+ POST_UNINSTALL = :
32
+ build_triplet = @build@
33
+ host_triplet = @host@
34
+ target_triplet = @target@
35
+ subdir = man
36
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
37
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
38
+ am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
39
+ $(top_srcdir)/configure.ac
40
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
41
+ $(ACLOCAL_M4)
42
+ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
43
+ CONFIG_HEADER = $(top_builddir)/fficonfig.h
44
+ CONFIG_CLEAN_FILES =
45
+ SOURCES =
46
+ DIST_SOURCES =
47
+ man3dir = $(mandir)/man3
48
+ am__installdirs = "$(DESTDIR)$(man3dir)"
49
+ NROFF = nroff
50
+ MANS = $(man_MANS)
51
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
52
+ ACLOCAL = @ACLOCAL@
53
+ ALLOCA = @ALLOCA@
54
+ AMTAR = @AMTAR@
55
+ AM_RUNTESTFLAGS = @AM_RUNTESTFLAGS@
56
+ AR = @AR@
57
+ AUTOCONF = @AUTOCONF@
58
+ AUTOHEADER = @AUTOHEADER@
59
+ AUTOMAKE = @AUTOMAKE@
60
+ AWK = @AWK@
61
+ CC = @CC@
62
+ CCAS = @CCAS@
63
+ CCASDEPMODE = @CCASDEPMODE@
64
+ CCASFLAGS = @CCASFLAGS@
65
+ CCDEPMODE = @CCDEPMODE@
66
+ CFLAGS = @CFLAGS@
67
+ CPP = @CPP@
68
+ CPPFLAGS = @CPPFLAGS@
69
+ CXX = @CXX@
70
+ CXXCPP = @CXXCPP@
71
+ CXXDEPMODE = @CXXDEPMODE@
72
+ CXXFLAGS = @CXXFLAGS@
73
+ CYGPATH_W = @CYGPATH_W@
74
+ DEFS = @DEFS@
75
+ DEPDIR = @DEPDIR@
76
+ ECHO = @ECHO@
77
+ ECHO_C = @ECHO_C@
78
+ ECHO_N = @ECHO_N@
79
+ ECHO_T = @ECHO_T@
80
+ EGREP = @EGREP@
81
+ EXEEXT = @EXEEXT@
82
+ F77 = @F77@
83
+ FFLAGS = @FFLAGS@
84
+ GREP = @GREP@
85
+ HAVE_LONG_DOUBLE = @HAVE_LONG_DOUBLE@
86
+ INSTALL = @INSTALL@
87
+ INSTALL_DATA = @INSTALL_DATA@
88
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
89
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
90
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
91
+ LDFLAGS = @LDFLAGS@
92
+ LIBOBJS = @LIBOBJS@
93
+ LIBS = @LIBS@
94
+ LIBTOOL = @LIBTOOL@
95
+ LN_S = @LN_S@
96
+ LTLIBOBJS = @LTLIBOBJS@
97
+ MAINT = @MAINT@
98
+ MAKEINFO = @MAKEINFO@
99
+ MKDIR_P = @MKDIR_P@
100
+ OBJEXT = @OBJEXT@
101
+ PACKAGE = @PACKAGE@
102
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
103
+ PACKAGE_NAME = @PACKAGE_NAME@
104
+ PACKAGE_STRING = @PACKAGE_STRING@
105
+ PACKAGE_TARNAME = @PACKAGE_TARNAME@
106
+ PACKAGE_VERSION = @PACKAGE_VERSION@
107
+ PATH_SEPARATOR = @PATH_SEPARATOR@
108
+ RANLIB = @RANLIB@
109
+ SED = @SED@
110
+ SET_MAKE = @SET_MAKE@
111
+ SHELL = @SHELL@
112
+ STRIP = @STRIP@
113
+ TARGET = @TARGET@
114
+ TARGETDIR = @TARGETDIR@
115
+ VERSION = @VERSION@
116
+ abs_builddir = @abs_builddir@
117
+ abs_srcdir = @abs_srcdir@
118
+ abs_top_builddir = @abs_top_builddir@
119
+ abs_top_srcdir = @abs_top_srcdir@
120
+ ac_ct_CC = @ac_ct_CC@
121
+ ac_ct_CXX = @ac_ct_CXX@
122
+ ac_ct_F77 = @ac_ct_F77@
123
+ am__include = @am__include@
124
+ am__leading_dot = @am__leading_dot@
125
+ am__quote = @am__quote@
126
+ am__tar = @am__tar@
127
+ am__untar = @am__untar@
128
+ bindir = @bindir@
129
+ build = @build@
130
+ build_alias = @build_alias@
131
+ build_cpu = @build_cpu@
132
+ build_os = @build_os@
133
+ build_vendor = @build_vendor@
134
+ builddir = @builddir@
135
+ datadir = @datadir@
136
+ datarootdir = @datarootdir@
137
+ docdir = @docdir@
138
+ dvidir = @dvidir@
139
+ exec_prefix = @exec_prefix@
140
+ host = @host@
141
+ host_alias = @host_alias@
142
+ host_cpu = @host_cpu@
143
+ host_os = @host_os@
144
+ host_vendor = @host_vendor@
145
+ htmldir = @htmldir@
146
+ includedir = @includedir@
147
+ infodir = @infodir@
148
+ install_sh = @install_sh@
149
+ libdir = @libdir@
150
+ libexecdir = @libexecdir@
151
+ localedir = @localedir@
152
+ localstatedir = @localstatedir@
153
+ mandir = @mandir@
154
+ mkdir_p = @mkdir_p@
155
+ oldincludedir = @oldincludedir@
156
+ pdfdir = @pdfdir@
157
+ prefix = @prefix@
158
+ program_transform_name = @program_transform_name@
159
+ psdir = @psdir@
160
+ sbindir = @sbindir@
161
+ sharedstatedir = @sharedstatedir@
162
+ srcdir = @srcdir@
163
+ sysconfdir = @sysconfdir@
164
+ target = @target@
165
+ target_alias = @target_alias@
166
+ target_cpu = @target_cpu@
167
+ target_os = @target_os@
168
+ target_vendor = @target_vendor@
169
+ toolexecdir = @toolexecdir@
170
+ toolexeclibdir = @toolexeclibdir@
171
+ top_builddir = @top_builddir@
172
+ top_srcdir = @top_srcdir@
173
+ AUTOMAKE_OPTIONS = foreign
174
+ EXTRA_DIST = ffi.3 ffi_call.3 ffi_prep_cif.3
175
+ man_MANS = ffi.3 ffi_call.3 ffi_prep_cif.3
176
+ all: all-am
177
+
178
+ .SUFFIXES:
179
+ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
180
+ @for dep in $?; do \
181
+ case '$(am__configure_deps)' in \
182
+ *$$dep*) \
183
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
184
+ && exit 0; \
185
+ exit 1;; \
186
+ esac; \
187
+ done; \
188
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \
189
+ cd $(top_srcdir) && \
190
+ $(AUTOMAKE) --foreign man/Makefile
191
+ .PRECIOUS: Makefile
192
+ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
193
+ @case '$?' in \
194
+ *config.status*) \
195
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
196
+ *) \
197
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
198
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
199
+ esac;
200
+
201
+ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
202
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
203
+
204
+ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
205
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
206
+ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
207
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
208
+
209
+ mostlyclean-libtool:
210
+ -rm -f *.lo
211
+
212
+ clean-libtool:
213
+ -rm -rf .libs _libs
214
+ install-man3: $(man3_MANS) $(man_MANS)
215
+ @$(NORMAL_INSTALL)
216
+ test -z "$(man3dir)" || $(MKDIR_P) "$(DESTDIR)$(man3dir)"
217
+ @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \
218
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
219
+ for i in $$l2; do \
220
+ case "$$i" in \
221
+ *.3*) list="$$list $$i" ;; \
222
+ esac; \
223
+ done; \
224
+ for i in $$list; do \
225
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
226
+ else file=$$i; fi; \
227
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
228
+ case "$$ext" in \
229
+ 3*) ;; \
230
+ *) ext='3' ;; \
231
+ esac; \
232
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
233
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
234
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
235
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
236
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst"; \
237
+ done
238
+ uninstall-man3:
239
+ @$(NORMAL_UNINSTALL)
240
+ @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \
241
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
242
+ for i in $$l2; do \
243
+ case "$$i" in \
244
+ *.3*) list="$$list $$i" ;; \
245
+ esac; \
246
+ done; \
247
+ for i in $$list; do \
248
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
249
+ case "$$ext" in \
250
+ 3*) ;; \
251
+ *) ext='3' ;; \
252
+ esac; \
253
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
254
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
255
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
256
+ echo " rm -f '$(DESTDIR)$(man3dir)/$$inst'"; \
257
+ rm -f "$(DESTDIR)$(man3dir)/$$inst"; \
258
+ done
259
+ tags: TAGS
260
+ TAGS:
261
+
262
+ ctags: CTAGS
263
+ CTAGS:
264
+
265
+
266
+ distdir: $(DISTFILES)
267
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
268
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
269
+ list='$(DISTFILES)'; \
270
+ dist_files=`for file in $$list; do echo $$file; done | \
271
+ sed -e "s|^$$srcdirstrip/||;t" \
272
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
273
+ case $$dist_files in \
274
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
275
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
276
+ sort -u` ;; \
277
+ esac; \
278
+ for file in $$dist_files; do \
279
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
280
+ if test -d $$d/$$file; then \
281
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
282
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
283
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
284
+ fi; \
285
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
286
+ else \
287
+ test -f $(distdir)/$$file \
288
+ || cp -p $$d/$$file $(distdir)/$$file \
289
+ || exit 1; \
290
+ fi; \
291
+ done
292
+ check-am: all-am
293
+ check: check-am
294
+ all-am: Makefile $(MANS)
295
+ installdirs:
296
+ for dir in "$(DESTDIR)$(man3dir)"; do \
297
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
298
+ done
299
+ install: install-am
300
+ install-exec: install-exec-am
301
+ install-data: install-data-am
302
+ uninstall: uninstall-am
303
+
304
+ install-am: all-am
305
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
306
+
307
+ installcheck: installcheck-am
308
+ install-strip:
309
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
310
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
311
+ `test -z '$(STRIP)' || \
312
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
313
+ mostlyclean-generic:
314
+
315
+ clean-generic:
316
+
317
+ distclean-generic:
318
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
319
+
320
+ maintainer-clean-generic:
321
+ @echo "This command is intended for maintainers to use"
322
+ @echo "it deletes files that may require special tools to rebuild."
323
+ clean: clean-am
324
+
325
+ clean-am: clean-generic clean-libtool mostlyclean-am
326
+
327
+ distclean: distclean-am
328
+ -rm -f Makefile
329
+ distclean-am: clean-am distclean-generic
330
+
331
+ dvi: dvi-am
332
+
333
+ dvi-am:
334
+
335
+ html: html-am
336
+
337
+ info: info-am
338
+
339
+ info-am:
340
+
341
+ install-data-am: install-man
342
+
343
+ install-dvi: install-dvi-am
344
+
345
+ install-exec-am:
346
+
347
+ install-html: install-html-am
348
+
349
+ install-info: install-info-am
350
+
351
+ install-man: install-man3
352
+
353
+ install-pdf: install-pdf-am
354
+
355
+ install-ps: install-ps-am
356
+
357
+ installcheck-am:
358
+
359
+ maintainer-clean: maintainer-clean-am
360
+ -rm -f Makefile
361
+ maintainer-clean-am: distclean-am maintainer-clean-generic
362
+
363
+ mostlyclean: mostlyclean-am
364
+
365
+ mostlyclean-am: mostlyclean-generic mostlyclean-libtool
366
+
367
+ pdf: pdf-am
368
+
369
+ pdf-am:
370
+
371
+ ps: ps-am
372
+
373
+ ps-am:
374
+
375
+ uninstall-am: uninstall-man
376
+
377
+ uninstall-man: uninstall-man3
378
+
379
+ .MAKE: install-am install-strip
380
+
381
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
382
+ distclean distclean-generic distclean-libtool distdir dvi \
383
+ dvi-am html html-am info info-am install install-am \
384
+ install-data install-data-am install-dvi install-dvi-am \
385
+ install-exec install-exec-am install-html install-html-am \
386
+ install-info install-info-am install-man install-man3 \
387
+ install-pdf install-pdf-am install-ps install-ps-am \
388
+ install-strip installcheck installcheck-am installdirs \
389
+ maintainer-clean maintainer-clean-generic mostlyclean \
390
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
391
+ uninstall uninstall-am uninstall-man uninstall-man3
392
+
393
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
394
+ # Otherwise a system limit (for SysV at least) may be exceeded.
395
+ .NOEXPORT:
@@ -0,0 +1,31 @@
1
+ .Dd February 15, 2008
2
+ .Dt FFI 3
3
+ .Sh NAME
4
+ .Nm FFI
5
+ .Nd Foreign Function Interface
6
+ .Sh LIBRARY
7
+ libffi, -lffi
8
+ .Sh SYNOPSIS
9
+ .In ffi.h
10
+ .Ft ffi_status
11
+ .Fo ffi_prep_cif
12
+ .Fa "ffi_cif *cif"
13
+ .Fa "ffi_abi abi"
14
+ .Fa "unsigned int nargs"
15
+ .Fa "ffi_type *rtype"
16
+ .Fa "ffi_type **atypes"
17
+ .Fc
18
+ .Ft void
19
+ .Fo ffi_call
20
+ .Fa "ffi_cif *cif"
21
+ .Fa "void (*fn)(void)"
22
+ .Fa "void *rvalue"
23
+ .Fa "void **avalue"
24
+ .Fc
25
+ .Sh DESCRIPTION
26
+ The foreign function interface provides a mechanism by which a function can
27
+ generate a call to another function at runtime without requiring knowledge of
28
+ the called function's interface at compile time.
29
+ .Sh SEE ALSO
30
+ .Xr ffi_prep_cif 3 ,
31
+ .Xr ffi_call 3
@@ -0,0 +1,103 @@
1
+ .Dd February 15, 2008
2
+ .Dt ffi_call 3
3
+ .Sh NAME
4
+ .Nm ffi_call
5
+ .Nd Invoke a foreign function.
6
+ .Sh SYNOPSIS
7
+ .In ffi.h
8
+ .Ft void
9
+ .Fo ffi_call
10
+ .Fa "ffi_cif *cif"
11
+ .Fa "void (*fn)(void)"
12
+ .Fa "void *rvalue"
13
+ .Fa "void **avalue"
14
+ .Fc
15
+ .Sh DESCRIPTION
16
+ The
17
+ .Nm ffi_call
18
+ function provides a simple mechanism for invoking a function without
19
+ requiring knowledge of the function's interface at compile time.
20
+ .Fa fn
21
+ is called with the values retrieved from the pointers in the
22
+ .Fa avalue
23
+ array. The return value from
24
+ .Fa fn
25
+ is placed in storage pointed to by
26
+ .Fa rvalue .
27
+ .Fa cif
28
+ contains information describing the data types, sizes and alignments of the
29
+ arguments to and return value from
30
+ .Fa fn ,
31
+ and must be initialized with
32
+ .Nm ffi_prep_cif
33
+ before it is used with
34
+ .Nm ffi_call .
35
+ .Pp
36
+ .Fa rvalue
37
+ must point to storage that is sizeof(long) or larger. For smaller
38
+ return value sizes, the
39
+ .Nm ffi_arg
40
+ or
41
+ .Nm ffi_sarg
42
+ integral type must be used to hold
43
+ the return value.
44
+ .Sh EXAMPLES
45
+ .Bd -literal
46
+ #include <ffi/ffi.h>
47
+ #include <stdio.h>
48
+
49
+ unsigned char
50
+ foo(unsigned int, float);
51
+
52
+ int
53
+ main(int argc, const char **argv)
54
+ {
55
+ ffi_cif cif;
56
+ ffi_type *arg_types[2];
57
+ void *arg_values[2];
58
+ ffi_status status;
59
+
60
+ // Because the return value from foo() is smaller than sizeof(long), it
61
+ // must be passed as ffi_arg or ffi_sarg.
62
+ ffi_arg result;
63
+
64
+ // Specify the data type of each argument. Available types are defined
65
+ // in <ffi/ffi.h>.
66
+ arg_types[0] = &ffi_type_uint;
67
+ arg_types[1] = &ffi_type_float;
68
+
69
+ // Prepare the ffi_cif structure.
70
+ if ((status = ffi_prep_cif(&cif, FFI_DEFAULT_ABI,
71
+ 2, &ffi_type_uint8, arg_types)) != FFI_OK)
72
+ {
73
+ // Handle the ffi_status error.
74
+ }
75
+
76
+ // Specify the values of each argument.
77
+ unsigned int arg1 = 42;
78
+ float arg2 = 5.1;
79
+
80
+ arg_values[0] = &arg1;
81
+ arg_values[1] = &arg2;
82
+
83
+ // Invoke the function.
84
+ ffi_call(&cif, FFI_FN(foo), &result, arg_values);
85
+
86
+ // The ffi_arg 'result' now contains the unsigned char returned from foo(),
87
+ // which can be accessed by a typecast.
88
+ printf("result is %hhu", (unsigned char)result);
89
+
90
+ return 0;
91
+ }
92
+
93
+ // The target function.
94
+ unsigned char
95
+ foo(unsigned int x, float y)
96
+ {
97
+ unsigned char result = x - y;
98
+ return result;
99
+ }
100
+ .Ed
101
+ .Sh SEE ALSO
102
+ .Xr ffi 3 ,
103
+ .Xr ffi_prep_cif 3