[Rcpp-devel] Convention on where to put RCPP_MODULE declarations?
Romain Francois
romain at r-enthusiasts.com
Tue Nov 16 09:50:33 CET 2010
Le 16/11/10 03:50, Douglas Bates a écrit :
> Is there any guidance on where to put RCPP_MODULE declarations in
> package sources? I'm working on the assumption of one module per
> package but the module itself can contain multiple class or function
> declarations. Is one module per package reasonable or would there be
> a reason for multiple modules in a package?
>
> I typically keep class declarations and definitions in separate files,
> usually one class per pair of files. To me it seems that the module
> declaration belongs in a header file but I haven't looked closely at
> what it expands to. Should it be in a header file or a .cpp source
> code file?
I know from previous conversations that this might not be of interest,
but here's the definition of RCPP_MODULE anyway:
#define RCPP_MODULE(name) \
void _rcpp_module_##name##_init() ; \
static Rcpp::Module _rcpp_module_##name( # name ) ; \
extern "C" SEXP _rcpp_module_boot_##name(){ \
::setCurrentScope( & _rcpp_module_##name ) ; \
_rcpp_module_##name##_init( ) ; \
Rcpp::XPtr<Rcpp::Module> mod_xp( & _rcpp_module_##name , false ) ; \
::setCurrentScope( 0 ) ; \
return mod_xp ; \
} \
void _rcpp_module_##name##_init()
I'm specially concerned about the "static" in the third line. I think
for that reason, it has to be in a .cpp file.
I would declare classes and functions in headers, define them in a .cpp
file and module them in a separate file.
There is no design restrictions about the number of modules per package,
so if it does not work it is a bug. I simply have not tried it as I'm
happy with a single one.
Romain
--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://bit.ly/9VOd3l : ZAT! 2010
|- http://bit.ly/c6DzuX : Impressionnism with R
`- http://bit.ly/czHPM7 : Rcpp Google tech talk on youtube
More information about the Rcpp-devel
mailing list