[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