[Rcpp-devel] Expose cpp class with built-in boost odeint to R

Ralf Stubner ralf.stubner at daqana.com
Mon Sep 17 13:00:59 CEST 2018


On 15.09.2018 00:05, Simon Woodward wrote:
> My simulation model will be 1000+ lines of C++, this is a prototype, I embedded the code inline to make it easier to post as a reprex to this forum.

A C++ file with a special /*** R ... */ comment would still be a minimal
example. Just look at the code RStudio produces by default when you
create a new C++ file. When you use Rcpp::sourceCpp() on that file, not
only the code is compiled and linked, but the R code within this special
comment is executed. RStudio does that by default when you source the
file, e.g. via C-S-Return.

> - do I need to worry about destructing my global variable my_spring (the instance of my class)? If so, how do I do this? 

Global variables get destructed when the program ends. I would get rid
the global variable, making it local to the translation unit. One way to
achieve that would be an anonymous namespace.

> - for read/write efficiency, can/should I make a persistent link (Rccp::XPtr?) between the my_spring.variable property and an object or function in R? If so, how do I do this? Or is it better simply to copy-pass the data when needed and let Rccp handle the conversion from std::unordered_map<string,double> to an R named vector?

I am not sure what you are trying to do here. But as a general rule: try
to write correct and working code first and do any performance
optimizations when you know where the bottlenecks are.

cheerio
ralf

-- 
Ralf Stubner
Senior Software Engineer / Trainer

daqana GmbH
Dortustraße 48
14467 Potsdam

T: +49 331 23 61 93 11
F: +49 331 23 61 93 90
M: +49 162 20 91 196
Mail: ralf.stubner at daqana.com

Sitz: Potsdam
Register: AG Potsdam HRB 27966 P
Ust.-IdNr.: DE300072622
Geschäftsführer: Prof. Dr. Dr. Karl-Kuno Kunze


More information about the Rcpp-devel mailing list