[Rcpp-devel] Reading-list when creating a mapping for a semi-complex C++ library
Dirk Eddelbuettel
edd at debian.org
Sun Jul 24 00:44:39 CEST 2011
Hi Steffen,
On 23 July 2011 at 23:24, Steffen Neumann wrote:
| I am asking for a reading list (rather than the actual answers,
| certainly it is somewhere in the great and vast Documentation!)
| or best practices creating R bindings to a moderately complex
| C++ library.
|
| We have created https://github.com/sneumann/mzR
| which is an R package to read mass spectrometry data,
| using the http://proteowizard.sourceforge.net/ (short: pwiz) library.
|
| The first thing we did was to create a C++ wrapper class,
| which encapsulated the "complexity" of pwiz, and would have
| a number ov Rcpp::List::create(...) to prepare the return
| values and a single Rcpp-module to call into the wrapper class.
| That works fine, and now we want to go one step further ;-)
|
| The class hierarchy in pwiz has a class "MSData",
| which contains a class "Run" which contains a class "SpectrumListPtr"
| which is a "boost::shared_ptr<SpectrumList>" etc. You get the idea.
| An example of what one can do in C++ is line 60..100
| http://proteowizard.svn.sourceforge.net/viewvc/proteowizard/trunk/pwiz/pwiz_tools/examples/mscat.cpp?revision=2874&view=markup
| and it would be great to be able to do something similar in R.
|
| Questions:
|
| 1) Is it feasible to create Rcpp-modules for each of these classes,
| so that accessing them can be programmed in R ?
"Maybe". Rcpp Modules are very nice, very useful and quite promising. But
some things are limiting as e.g. the inability to have inheritance.
| 2) Or does it make more sense to create C++ wrappers which are simpler
| to add as Rcpp-module(s), and to keep the R side simpler ?
"Maybe". That is what I have done in the past. It's simple, but it does not
scale very well. But maybe you can use some cheap labour from Univ. Halle :)
| 3) Which of the existing packages using Rcpp comes closest
| (in terms of architecture) to what I want, so I can go
| and read their code for inspiration ?
Maybe my (in the architectural sense "old fashioned / simple") RQuantLib
which was at the start of Rcpp? It accesses a somewhat large, complex,
Boost-using library called QuantLib.
RSNNS may be another candidate but I haven't looked that closely at it for
lack of time. Others may speak for their projects.
Hope this helps, Dirk
--
Gauss once played himself in a zero-sum game and won $50.
-- #11 at http://www.gaussfacts.com
More information about the Rcpp-devel
mailing list