\HeaderA{checkFF}{Check Foreign Function Calls}{checkFF}
\aliasA{print.checkFF}{checkFF}{print.checkFF}
\keyword{programming}{checkFF}
\keyword{utilities}{checkFF}
\begin{Description}\relax
Performs checks on calls to compiled code from R code.  Currently only
checks whether the interface functions such as \code{.C} and
\code{.Fortran} are called with a \code{"\LinkA{NativeSymbolInfo}{NativeSymbolInfo}"}
first argument or with argument \code{PACKAGE} specified, which is
highly recommended to avoid name clashes in foreign function calls.
\end{Description}
\begin{Usage}
\begin{verbatim}
checkFF(package, dir, file, lib.loc = NULL,
        verbose = getOption("verbose"))
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{package}] a character string naming an installed package.  If
given, the installed R code of the package is checked.
\item[\code{dir}] a character string specifying the path to a package's root
source directory.  This should contain the subdirectory \file{R}
(for R code).  Only used if \code{package} is not given.
\item[\code{file}] the name of a file containing R code to be checked.  Used
if neither \code{package} nor \code{dir} are given.
\item[\code{lib.loc}] a character vector of directory names of \R{} libraries,
or \code{NULL}.  The default value of \code{NULL} corresponds to all
libraries currently known.  The specified library trees are used to
search for \code{package}.
\item[\code{verbose}] a logical.  If \code{TRUE}, additional diagnostics are
printed (and the result is returned invisibly).
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
Note that we can only check if the \code{name} argument is a symbol or
a character string, not what class of object the symbol resolves to
at run-time.

\emph{If} the package has a name space and \emph{if} that contains a
\code{useDynLib} directive, calls in top-level functions in the
package are not reported as their symbols will be preferentially
looked up in the DLL named in the first \code{useDynLib} directive.
\end{Details}
\begin{Value}
An object of class \code{"checkFF"}, which currently is a list of the
(parsed) foreign function calls with a character first argument and
no \code{PACKAGE} argument.

There is a \code{print} method to display the information contained in
such objects.
\end{Value}
\begin{Section}{Warning}
This function is still experimental.  Both name and interface might
change in future versions.
\end{Section}
\begin{SeeAlso}\relax
\code{\LinkA{.C}{.C}},
\code{\LinkA{.Fortran}{.Fortran}};
\code{\LinkA{Foreign}{Foreign}}.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
checkFF(package = "stats", verbose = TRUE)
\end{ExampleCode}
\end{Examples}

