Guile's dynamic linking functions make it relatively easy to write a
module that incorporates code from third-party object code libraries.
-@c ARGFIXME fname/library-file
@c docstring begin (texi-doc-string "guile" "dynamic-link")
-@deffn primitive dynamic-link fname
-Open the dynamic library @var{library-file}. A library handle
-representing the opened library is returned; this handle should be used
-as the @var{lib} argument to the following functions.
+@deffn primitive dynamic-link filename
+Open the dynamic library called @var{filename}. A library
+handle representing the opened library is returned; this handle
+should be used as the @var{dobj} argument to the following
+functions.
@end deffn
@c docstring begin (texi-doc-string "guile" "dynamic-object?")
otherwise.
@end deffn
-@c ARGFIXME dobj/dynobj/library-handle
@c docstring begin (texi-doc-string "guile" "dynamic-unlink")
@deffn primitive dynamic-unlink dobj
-Unlink the library represented by @var{library-handle},
-and remove any imported symbols from the address space.
-GJB:FIXME:DOC: 2nd version below:
Unlink the indicated object file from the application. The
-argument @var{dynobj} must have been obtained by a call to
+argument @var{dobj} must have been obtained by a call to
@code{dynamic-link}. After @code{dynamic-unlink} has been
-called on @var{dynobj}, its content is no longer accessible.
+called on @var{dobj}, its content is no longer accessible.
@end deffn
-@c ARGFIXME symb/func/function dobj/lib/dynobj
@c docstring begin (texi-doc-string "guile" "dynamic-func")
@deffn primitive dynamic-func name dobj
Search the dynamic object @var{dobj} for the C function
needed or not and will add it when necessary.
@end deffn
-@c ARGFIXME lib-thunk/func/function lib/dobj/dynobj
@c docstring begin (texi-doc-string "guile" "dynamic-call")
@deffn primitive dynamic-call func dobj
-Call @var{lib-thunk}, a procedure of no arguments. If @var{lib-thunk}
-is a string, it is assumed to be a symbol found in the dynamic library
-@var{lib} and is fetched with @code{dynamic-func}. Otherwise, it should
-be a function handle returned by a previous call to @code{dynamic-func}.
-The return value is unspecified.
-GJB:FIXME:DOC 2nd version below
-Call the C function indicated by @var{function} and @var{dynobj}. The
-function is passed no arguments and its return value is ignored. When
-@var{function} is something returned by @code{dynamic-func}, call that
-function and ignore @var{dynobj}. When @var{function} is a string (or
-symbol, etc.), look it up in @var{dynobj}; this is equivalent to
-
+Call the C function indicated by @var{func} and @var{dobj}.
+The function is passed no arguments and its return value is
+ignored. When @var{function} is something returned by
+@code{dynamic-func}, call that function and ignore @var{dobj}.
+When @var{func} is a string , look it up in @var{dynobj}; this
+is equivalent to
@smallexample
-(dynamic-call (dynamic-func @var{function} @var{dynobj} #f))
+(dynamic-call (dynamic-func @var{func} @var{dobj} #f))
@end smallexample
Interrupts are deferred while the C function is executing (with
@code{SCM_DEFER_INTS}/@code{SCM_ALLOW_INTS}).
@end deffn
-@c ARGFIXME func/proc/function dobj/dynobj
@c docstring begin (texi-doc-string "guile" "dynamic-args-call")
@deffn primitive dynamic-args-call func dobj args
-Call @var{proc}, a dynamically loaded function, passing it the argument
-list @var{args} (a list of strings). As with @code{dynamic-call},
-@var{proc} should be either a function handle or a string, in which case
-it is first fetched from @var{lib} with @code{dynamic-func}.
-
-@var{proc} is assumed to return an integer, which is used as the return
-value from @code{dynamic-args-call}.
-
-GJB:FIXME:DOC 2nd version below
-Call the C function indicated by @var{function} and @var{dynobj}, just
-like @code{dynamic-call}, but pass it some arguments and return its
-return value. The C function is expected to take two arguments and
-return an @code{int}, just like @code{main}:
-
+Call the C function indicated by @var{func} and @var{dobj},
+just like @code{dynamic-call}, but pass it some arguments and
+return its return value. The C function is expected to take
+two arguments and return an @code{int}, just like @code{main}:
@smallexample
int c_func (int argc, char **argv);
@end smallexample
-The parameter @var{args} must be a list of strings and is converted into
-an array of @code{char *}. The array is passed in @var{argv} and its
-size in @var{argc}. The return value is converted to a Scheme number
-and returned from the call to @code{dynamic-args-call}.
+The parameter @var{args} must be a list of strings and is
+converted into an array of @code{char *}. The array is passed
+in @var{argv} and its size in @var{argc}. The return value is
+converted to a Scheme number and returned from the call to
+@code{dynamic-args-call}.
@end deffn
@c docstring begin (texi-doc-string "guile" "c-registered-modules")