[Rd] Using R_MakeExternalPtr

From: Jonathan Zhou <jonathan.zhou_at_utoronto.ca>
Date: Wed, 25 Jul 2007 08:35:57 -0700 (PDT)

Hi all,

I've been writing a package and I've run into a problem that I'm unsure how to solve. I am looking to pass a C++ class object to R so that it may be passed back to another C++ function later on to be used. I'm quite new to R and this is my first time writing a package, so I hope you can bear with me.

The following is how I create the class and use R_MakeExternalPtr(). This occurs in a function called "soamInit":

    Session* sesPtr = conPtr->createSession(attributes);     void* temp = session;

    SEXP out = R_MakeExternalPtr(temp, R_NilValue, R_NilValue);     return out;

The following is how I try to retrieve the class object in a different C++ function called "soamSubmit", where sesCon is the externalPtr :

	void* temp = R_ExternalPtrAddr(sesCon);
        Session* sesPtr = reinterpret_cast<Session*>(temp);

The error I get when trying to run the R function is :

Traceback:

  1. .Call("soamSubmit", counter, sesCon, final.script, packages)
  2. soam.Rapply(x, tester, join.method = c, njobs = 2)

So it seems like a scoping problem to me, though I'm unsure how to solve it.

-Jon
--

View this message in context: http://www.nabble.com/Using-R_MakeExternalPtr-tf4142904.html#a11785023 Sent from the R devel mailing list archive at Nabble.com.



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed 25 Jul 2007 - 16:09:11 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 25 Jul 2007 - 18:36:59 GMT.

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