odin (version 1.0.1)

odin_package: Create odin model in a package

Description

Create an odin model within an existing package.

Usage

odin_package(path_package)

Arguments

path_package

Path to the package root (the directory that contains DESCRIPTION)

Details

I am resisting the urge to actually create the package here. There are better options than I can come up with; for example devtools::create, pkgkitten::kitten, mason::mason, or creating DESCRIPTION files using desc. What is required here is that your package:

  • Lists odin in Imports:

  • Includes useDynLib{<your package name>} in NAMESPACE (possibly via a roxygen comment @useDynLib <your package name>

  • To avoid a NOTE in R CMD check, import something from odin in your namespace (e.g., importFrom("odin", "odin") or roxygen @importFrom(odin, odin)

Point this function at the package root (the directory containing DESCRIPTION and it will write out files src/odin.c and odin.R. These files will be overwritten without warning by running this again.

There are a few unresolved issues with this approach, notably activating "native symbol registration", and the interaction with packages such as Rcpp that automatically collate a list of symbols. The mechanism may change in a future version, though the interface (with source files in inst/odin will remain the same.

Examples

Run this code
# NOT RUN {
path <- tempfile()
dir.create(path)

src <- system.file("examples/package", package = "odin", mustWork = TRUE)
file.copy(src, path, recursive = TRUE)
pkg <- file.path(path, "package")

# The package is minimal:
dir(pkg)

# But contains odin files in inst/odin
dir(file.path(pkg, "inst/odin"))

# Compile the odin code in the package
odin::odin_package(pkg)

# Which creates the rest of the package structure
dir(pkg)
dir(file.path(pkg, "R"))
dir(file.path(pkg, "src"))
# }

Run the code above in your browser using DataLab