From simon.urbanek at r-project.org  Tue Dec 25 18:15:56 2012
From: simon.urbanek at r-project.org (Simon Urbanek)
Date: Tue, 25 Dec 2012 12:15:56 -0500
Subject: [Rd] reinterpreting externalptr in R
In-Reply-To: <1356435543812-4653908.post@n4.nabble.com>
References: <1356435543812-4653908.post@n4.nabble.com>
Message-ID: <93228B1F-DC73-4D4F-A472-88CFA45ED03C@r-project.org>

On Dec 25, 2012, at 6:39 AM, andre__ wrote:

> Hi,
> 
> I am using swig to build a wrapper for an c-function to use it in R. I would
> like to define a generic function, which gives back a void pointer. On the R
> side, I know what this pointer is pointing to, whether it is an integer or
> an string, or something else... but I need to somehow reinterpret the
> resulting "externalptr" into another form...
> 
> a function that looks like the following:
> 
> *void* test(){
>    std::string str="test";
>    return str.c_str();
> }*
> 
> when I call this from R:
> 
> *str <- test()
> typeof(str) % result is: "externalptr"*
> 
> how could I reinterpret this to a charcterarray, to a numeric, to list, or
> ...
> 

The simple answer is you can't. External pointers are entirely opaque to R, so *you* have to write that code that interprets them. Obviously it's then up to you to create the corresponding R object from the external pointer.

You may want to have a look at interface packages like Rcpp, rJava, Rserve, ... to understand how objects are converted to/from other languages.

Cheers,
Simon



> Thanks for any suggestions ;)
> 
> 
> 
> --
> View this message in context: http://r.789695.n4.nabble.com/reinterpreting-externalptr-in-R-tp4653908.html
> 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
> 
> 



[Rd] reinterpreting externalptr in R
Simon Urbanek