11# # RcppEigen.package.skeleton.R: makes a skeleton for a package that wants to use RcppEigen
22# #
3- # # Copyright (C) 2011 - 2014 Douglas Bates, Dirk Eddelbuettel and Romain Francois
3+ # # Copyright (C) 2011 - 2015 Douglas Bates, Dirk Eddelbuettel and Romain Francois
44# #
55# # This file is part of RcppEigen.
66# #
@@ -31,21 +31,27 @@ RcppEigen.package.skeleton <- function(name= "anRpackage", list = character(),
3131 } else {
3232 fake <- FALSE
3333 }
34-
34+
35+ haveKitten <- requireNamespace(" pkgKitten" , quietly = TRUE , character.only = TRUE )
36+ skelFunUsed <- ifelse(haveKitten , " kitten" , " package.skeleton" )
37+ message(" \n Calling " , skelFunUsed , " to create basic package." )
38+
3539 # # first let the traditional version do its business
3640 call <- match.call()
37- call [[1 ]] <- as.name(" package.skeleton" )
38- if (" example_code" %in% names(call )) {
39- # # remove the example_code argument
40- call [[" example_code" ]] <- NULL
41- }
42- if (fake ) {
43- call [[" list" ]] <- " Rcpp.fake.fun"
41+ call [[1 ]] <- if (haveKitten ) as.name(" kitten" ) else as.name(" package.skeleton" )
42+ if (! haveKitten ) { # in the package.skeleton() case
43+ if (" example_code" %in% names(call )) {
44+ call [[" example_code" ]] <- NULL # remove the example_code argument
45+ }
46+ if (fake ) {
47+ call [[" list" ]] <- " Rcpp.fake.fun"
48+ }
4449 }
4550
46- tryCatch(eval(call , envir = env ), error = function (e ) {
47- stop(" error while calling `package.skeleton`" )
48- })
51+ tryCatch(eval(call , envir = env ),
52+ error = function (e ) {
53+ stop(paste(" error while calling `" , skelFunUsed , " `" , sep = " " ))
54+ })
4955
5056 message(" \n Adding RcppEigen settings" )
5157
@@ -65,7 +71,7 @@ RcppEigen.package.skeleton <- function(name= "anRpackage", list = character(),
6571 message(" >> added LinkingTo: Rcpp, RcppEigen" )
6672 }
6773
68- # # if there is a NAMESPACE, add a useDynLib
74+ # # add a useDynLib to NAMESPACE,
6975 NAMESPACE <- file.path(root , " NAMESPACE" )
7076 lines <- readLines(NAMESPACE )
7177 if (! grepl(" useDynLib" , lines )) {
@@ -74,30 +80,36 @@ RcppEigen.package.skeleton <- function(name= "anRpackage", list = character(),
7480 " importFrom(Rcpp, evalCpp)" , # # ensures Rcpp instantiation
7581 lines )
7682 writeLines(lines , con = NAMESPACE )
77- message(" >> added useDynLib directive to NAMESPACE" )
83+ message(" >> added useDynLib and importFrom directives to NAMESPACE" )
7884 }
7985
8086 # # lay things out in the src directory
8187 src <- file.path(root , " src" )
8288 if (! file.exists(src )) {
8389 dir.create(src )
8490 }
91+ man <- file.path(root , " man" )
92+ if (! file.exists(man )) {
93+ dir.create(man )
94+ }
8595 skeleton <- system.file(" skeleton" , package = " RcppEigen" )
8696 Makevars <- file.path(src , " Makevars" )
8797 if (! file.exists(Makevars )) {
8898 file.copy(file.path(skeleton , " Makevars" ), Makevars )
89- message(" >> added Makevars file" )
99+ message(" >> added Makevars file with RcppEigen settings " )
90100 }
91101
92102 Makevars.win <- file.path(src , " Makevars.win" )
93103 if (! file.exists(Makevars.win )) {
94104 file.copy(file.path(skeleton , " Makevars.win" ), Makevars.win )
95- message(" >> added Makevars.win file" )
105+ message(" >> added Makevars.win file with RcppEigen settings " )
96106 }
97107
98108 if (example_code ) {
99109 file.copy(file.path(skeleton , " rcppeigen_hello_world.cpp" ), src )
100110 message(" >> added example src file using Eigen classes" )
111+ file.copy(file.path(skeleton , " rcppeigen_hello_world.Rd" ), man )
112+ message(" >> added example Rd file for using Eigen classes" )
101113
102114 Rcpp :: compileAttributes(root )
103115 message(" >> invoked Rcpp::compileAttributes to create wrappers" )
@@ -107,7 +119,6 @@ RcppEigen.package.skeleton <- function(name= "anRpackage", list = character(),
107119 rm(" Rcpp.fake.fun" , envir = env )
108120 unlink(file.path(root , " R" , " Rcpp.fake.fun.R" ))
109121 unlink(file.path(root , " man" , " Rcpp.fake.fun.Rd" ))
110-
111122 }
112123
113124 invisible (NULL )
0 commit comments