Re: [Rd] persistent C++ objects

From: Thomas Lumley <tlumley_at_u.washington.edu>
Date: Mon 24 Jul 2006 - 20:38:20 GMT

On Mon, 24 Jul 2006, Tamas K Papp wrote:

> 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.

R has an external pointer type for this purpose.

> 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.

You can register a C finalizer for an external pointer. This is a C function that will be called when the object is garbage collected, so you can call the destructor from there.

AFAICT the only documentation for this is on the developer page, where there is a link to
http://www.stat.uiowa.edu/~luke/R/simpleref.html

I thought I remembered seeing something else, but I can't find anything now.

         -thomas

Thomas Lumley			Assoc. Professor, Biostatistics
tlumley@u.washington.edu	University of Washington, Seattle

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Jul 25 06:42:22 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Tue 25 Jul 2006 - 00:31:50 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.