cppXPtr: Define an 'XPtr' with a C++ Implementation

View source: R/cppXPtr.R

cppXPtrR Documentation

Define an XPtr with a C++ Implementation

Description

Dynamically define an XPtr with C++ source code. Compiles and links a shared library with bindings to the C++ function using cppFunction, then returns an XPtr that points to the function and can be used to be plugged into another C++ backend.

Usage

cppXPtr(
  code,
  depends = character(),
  plugins = character(),
  includes = character(),
  rebuild = FALSE,
  cacheDir = getOption("rcpp.cache.dir", tempdir()),
  showOutput = verbose,
  verbose = getOption("verbose")
)

Arguments

code

Source code for the function definition.

depends

Character vector of packages that the compilation depends on. Each package listed will first be queried for an inline plugin to determine header files to include. If no plugin is defined for the package then a header file based the package's name (e.g. PkgName.h) will be included.

plugins

Character vector of inline plugins to use for the compilation.

includes

Character vector of user includes (inserted after the includes provided by depends).

rebuild

Force a rebuild of the shared library.

cacheDir

Directory to use for caching shared libraries. If the underlying code passed to sourceCpp has not changed since the last invocation then a cached version of the shared library is used. The default value of tempdir() results in the cache being valid only for the current R session. Pass an alternate directory to preserve the cache across R sessions.

showOutput

TRUE to print R CMD SHLIB output to the console.

verbose

TRUE to print detailed information about generated code to the console.

Value

An object of class XPtr that points to the compiled function.

See Also

cppFunction, checkXPtr

Examples


# takes time to compile
ptr <- cppXPtr("double foo(int a, double b) { return a + b; }")
class(ptr)
print(ptr)


Enchufa2/RcppXPtrUtils documentation built on May 31, 2022, 10:41 p.m.