Skip to contents

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"))
#> [1] TRUE
file.exists(file.path(dir, "src", "cpp4r.cpp"))
#> [1] TRUE

# cleanup
unlink(dir, recursive = TRUE)