[Rd] persistent C++ objects
Tamas K Papp
tpapp at Princeton.EDU
Mon Jul 24 20:50:40 CEST 2006
Hi,
I am trying to create an R interface for Dynare++ [1], a k-order
solver for rational expectation models. I would like some advice on
how to glue the C++ code to R.
In C++, it works the following way:
- a DynareModelEq object is initialized with the formulas, parses them
and performs k-order symbolic expansions
- the user calls a member of this object multiple times with parameter
values (eg for MCMC), the object returns tensors
An R interface could work this way:
modeleq <- dynare_expand(... model description ...)
result1 <- dynare_substitute(modeleq, par1)
result2 <- dynare_substitute(modeleq, par2)
etc.
So the user needs to see something in R that corresponds to a C++
object that remains in the memory between calls. What is the proper
way to do that? Pass a pointer? How do I handle that in the .C()
calls, convert it to long int? My C++ programming knowledge is pretty
limited, suggestions and examples would be appreciated.
The rest (using extern "C" constructs as described in "Writing R
Extensions") is pretty clear, except how to make R call the destructor
of the object when the garbage collector removes it.
Thanks,
Tamas
[1] http://www.cepremap.cnrs.fr/juillard/mambo/index.php?option=com_content&task=view&id=53&Itemid=86
More information about the R-devel
mailing list