register {cpp4r}R Documentation

Generates wrappers for registered C++ functions

Description

Functions decorated with ⁠[[cpp4r::register]]⁠ in files ending in .cc, .cpp, .h or .hpp will be wrapped in generated code and registered to be called from R.

Note registered functions will not be exported from your package unless you also add a ⁠@export⁠ roxygen2 directive for them.

Usage

register(path = NULL, quiet = !is_interactive(), extension = c(".cpp", ".cc"))

Arguments

path The path to the package root directory. The default is NULL,
quiet If TRUE suppresses output from this function
extension The file extension to use for the generated src/cpp4r file. .cpp by default, but .cc is also supported.

Value

The paths to the generated R and C++ source files (in that order).

Examples

# create a minimal package
dir <- tempfile()
dir.create(dir)

writeLines("Package: testPkg", file.path(dir, "DESCRIPTION"))
writeLines("useDynLib(testPkg, .registration = TRUE)", file.path(dir, "NAMESPACE"))

# create a C++ file with a decorated function
dir.create(file.path(dir, "src"))
writeLines("[[cpp4r::register]] int one() { return 1; }", file.path(dir, "src", "one.cpp"))

# register the functions in the package
register(dir)

# Files generated by registration
file.exists(file.path(dir, "R", "cpp4r.R"))
file.exists(file.path(dir, "src", "cpp4r.cpp"))

# cleanup
unlink(dir, recursive = TRUE)

Loading...