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. Decorating a function only makes it callable via '.Call()'; it does not export or document it. See the "Package skeleton" vignette for how to export a registered function.

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...