Dear all, the following is not about "how to make it work", because it already works, it is only about "what's the best, cleanest way of doing it".
I have an s4 object with three slots, and many Rcpp functions dealing with it. My goal is to have a C struct (or class) equivalent to the s4 object, i.e. where each field is an s4 slot. Right now I defined the struct in this way: struct CountSignals { Rcpp::IntegerVector counts; Rcpp::IntegerVector breaks; bool ss; CountSignals(Rcpp::RObject csig) { if (not csig.inherits("CountSignals")) Rcpp::stop("expecting a CountSignals object"); counts = Rcpp::as<Rcpp::IntegerVector>(csig.slot("counts")); breaks = Rcpp::as<Rcpp::IntegerVector>(csig.slot("breaks")); ss = Rcpp::as<bool>(csig.slot("ss")); } }; And then each method starts like this, for example: // [[Rcpp::export]] Rcpp::List asList(Rcpp::RObject csig){ CountSignals x(csig); .... As said before, this is working fine, but I am skeptical about the following things: 1. in the assignment operators in the CountSignals constructor, am I copying the whole vector or am I copying a pointer to it? I need to make sure that nothing is copied (as these vectors can be very long). 2. Even cleaner would be to start a method in this way: // [[Rcpp::export]] Rcpp::List asList(CountSignals x){ .... do you know if/how I can achieve that? (All of this code is inside an R package). Thanks a lot! -- Alessandro Mammana, PhD Student Max Planck Institute for Molecular Genetics Ihnestraße 63-73 D-14195 Berlin, Germany _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel