[Rcpp-devel] split the c++ code in several files
baptiste auguie
baptiste.auguie at googlemail.com
Thu Sep 16 15:24:20 CEST 2010
Dear list,
This is probably not specific to Rcpp but I couldn't find any advice
in the R-exts manual. I am using RcppArmadillo in a package to do some
linear algebra. The C++ code is getting a bit too large to manage in
one file only, I would like to split its content in several files.
It seems possible, but I'm not sure how to deal with the scoping
rules: if a function requires a subroutine defined in another file it
seems to have a scoping problem (the compilation fails with message
"error: ‘xxxx’ was not declared in this scope)". Currently my cpp file
looks like this,
///////////////////////////////////////////////////
#include "cda.h"
#include <RcppArmadillo.h>
#include <iostream>
using namespace Rcpp ;
using namespace RcppArmadillo ;
using namespace std;
extern "C" {
arma::mat foo(const arma::mat& R) {
return(R);
}
// R wrapper
RCPP_FUNCTION_1(NumericMatrix, test, NumericMatrix IR)
{
arma::mat R = Rcpp::as< arma::mat >(IR);
return wrap( foo(R) );
}
// other routines
}
///////////////////////////////////////////////////
(The actual file is here:
https://r-forge.r-project.org/scm/viewvc.php/pkg/cda/src/cda.cpp?diff_format=h&root=photonics&view=log)
Are there workarounds / rules to split the content in several files?
Best regards,
baptiste
More information about the Rcpp-devel
mailing list