@@ -1,10 +1,10 @@
This is /home/green /libffi/doc/libffi.info, produced by makeinfo
version 4.13 from /home/green /libffi/doc/libffi.texi.
This is .. /libffi/doc/libffi.info, produced by makeinfo version 4.13
from .. /libffi/doc/libffi.texi.
This manual is for Libffi, a portable foreign-function interface
library.
Copyright (C) 2008, 2010 Red Hat, Inc.
Copyright (C) 2008, 2010, 2011 Red Hat, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU General Public License as
@@ -27,7 +27,7 @@ libffi
This manual is for Libffi, a portable foreign-function interface
library.
Copyright (C) 2008, 2010 Red Hat, Inc.
Copyright (C) 2008, 2010, 2011 Red Hat, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU General Public License as
@@ -115,8 +115,6 @@ To prepare a call interface object, use the function `ffi_prep_cif'.
want. *note Multiple ABIs:: for more information.
NARGS is the number of arguments that this function accepts.
`libffi' does not yet handle varargs functions; see *note Missing
Features:: for more information.
RTYPE is a pointer to an `ffi_type' structure that describes the
return type of the function. *Note Types::.
@@ -129,6 +127,30 @@ To prepare a call interface object, use the function `ffi_prep_cif'.
properly; `FFI_BAD_TYPEDEF' if one of the `ffi_type' objects is
incorrect; or `FFI_BAD_ABI' if the ABI parameter is invalid.
If the function being called is variadic (varargs) then
`ffi_prep_cif_var' must be used instead of `ffi_prep_cif'.
-- Function: ffi_status ffi_prep_cif_var (ffi_cif *CIF, ffi_abi
varabi, unsigned int NFIXEDARGS, unsigned int varntotalargs,
ffi_type *RTYPE, ffi_type **ARGTYPES)
This initializes CIF according to the given parameters for a call
to a variadic function. In general it's operation is the same as
for `ffi_prep_cif' except that:
NFIXEDARGS is the number of fixed arguments, prior to any variadic
arguments. It must be greater than zero.
NTOTALARGS the total number of arguments, including variadic and
fixed arguments.
Note that, different cif's must be prepped for calls to the same
function when different numbers of arguments are passed.
Also note that a call to `ffi_prep_cif_var' with
NFIXEDARGS=NOTOTALARGS is NOT equivalent to a call to
`ffi_prep_cif'.
To call a function using an initialized `ffi_cif', use the
`ffi_call' function:
@@ -511,9 +533,7 @@ File: libffi.info, Node: Missing Features, Next: Index, Prev: Using libffi,
`libffi' is missing a few features. We welcome patches to add support
for these.
* There is no support for calling varargs functions. This may work
on some platforms, depending on how the ABI is defined, but it is
not reliable.
* Variadic closures.
* There is no support for bit fields in structures.
@@ -521,6 +541,9 @@ for these.
* The "raw" API is undocumented.
Note that variadic support is very new and tested on a relatively
small number of platforms.
File: libffi.info, Node: Index, Prev: Missing Features, Up: Top
@@ -538,11 +561,12 @@ Index
* closure API: The Closure API. (line 13)
* closures: The Closure API. (line 13)
* FFI: Introduction. (line 31)
* ffi_call: The Basics. (line 41 )
* ffi_call: The Basics. (line 63 )
* ffi_closure_alloc: The Closure API. (line 19)
* ffi_closure_free: The Closure API. (line 26)
* FFI_CLOSURES: The Closure API. (line 13)
* ffi_prep_cif: The Basics. (line 16)
* ffi_prep_cif_var: The Basics. (line 39)
* ffi_prep_closure_loc: The Closure API. (line 34)
* ffi_status <1>: The Closure API. (line 37)
* ffi_status: The Basics. (line 18)
@@ -570,24 +594,24 @@ Index
* ffi_type_void: Primitive Types. (line 10)
* Foreign Function Interface: Introduction. (line 31)
* void <1>: The Closure API. (line 20)
* void: The Basics. (line 43 )
* void: The Basics. (line 65 )
Tag Table:
Node: Top 724
Node: Introduction 1466
Node: Using libffi 3102
Node: The Basics 3588
Node: Simple Example 637 4
Node: Types 740 1
Node: Primitive Types 768 4
Node: Structures 950 4
Node: Type Example 1036 4
Node: Multiple ABIs 1158 7
Node: The Closure API 1195 8
Node: Closure Example 1490 2
Node: Missing Features 1646 1
Node: Index 1695 4
Node: Top 71 2
Node: Introduction 1460
Node: Using libffi 3096
Node: The Basics 3582
Node: Simple Example 722 4
Node: Types 825 1
Node: Primitive Types 853 4
Node: Structures 1035 4
Node: Type Example 1121 4
Node: Multiple ABIs 1243 7
Node: The Closure API 1280 8
Node: Closure Example 1575 2
Node: Missing Features 1731 1
Node: Index 1776 4
End Tag Table