[RQt-devel] Rcpp

Michael Lawrence lawrence.michael at gene.com
Wed Jan 20 15:46:53 CET 2010


Cool. Yes, Rcpp could make many of the routine tasks easier, thus allowing
us to focus on the tough stuff.

Thanks for the info,
Michael

On Wed, Jan 20, 2010 at 2:05 AM, Romain Francois <romain.francois at dbmail.com
> wrote:

>
> On 01/19/2010 03:34 PM, Michael Lawrence wrote:
>
>> Thanks for passing this along. Rcpp has come a long way. It could be
>> very useful as we add more type conversions. The inline compilation is
>> also cool for experimentation.
>>
>
> Hi,
>
> Possibly. For type conversion, we have the magic "as" :
>
> template <typename T> T as( SEXP m_sexp)
>
> so that we do things like :
>
> SEXP foo ;
> int x = as<int>( foo ) ;
>
> the templateness gives the possibility to add other converters, so that
>
> Whatever y = as<Whatever>( foo ) ;
>
>
> .. and since all our RObject's implement the operator SEXP() for implicit
> conversion to SEXP, we can do this for free :
>
> CharacterVector x(1) ; x[0] = "foo" ;
> std::string y = as< std::string >( x ) ;
>
>
> One other thing I thought that could help (although I have not poked deeply
> into your code yet), is the templated external pointer class.
>
> SEXP x = ... ; /* an external pointer holding a Foo object */
> XPtr<Foo> p(x) ;
> p->bar() ;     /* where bar is a method of Foo */
>
> see
> http://romainfrancois.blog.free.fr/index.php?post/2010/01/08/External-pointers-with-Rcppfor details.
>
> Romain
>
>  Michael
>>
>> On Tue, Jan 19, 2010 at 1:50 AM, Romain Francois
>> <romain.francois at dbmail.com <mailto:romain.francois at dbmail.com>> wrote:
>>
>>    Hello,
>>
>>    I just wanted to draw your attention to the new version of Rcpp, that I
>>    think might be useful for qtinterfaces (maybe not).
>>
>>    Rcpp has been completely redesigned over the holidays (while keeping
>> the
>>    existing interface). Now we have many C++ classes that basically act as
>>    proxy classes for the SEXP they encapsulate. So that the object takes
>>    care of protection/release to the garbage collection.
>>
>>    We cover just about every (useful) SEXP type. For example, manipulating
>>    a character vector can look like this :
>>
>>    /* creating a character vector of two elements */
>>    Rcpp::CharacterVector x(2);
>>    x[0] = "foo" ;
>>    x[1] = "bar" ;
>>
>>    Romain
>>
>
>
>
> --
> Romain Francois
> Professional R Enthusiast
> +33(0) 6 28 91 30 30
> http://romainfrancois.blog.free.fr
> |- http://tr.im/KfKn : Rcpp 0.7.2
> |- http://tr.im/JOlc : External pointers with Rcpp
> `- http://tr.im/JFqa : R Journal, Volume 1/2, December 2009
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.r-forge.r-project.org/pipermail/qtinterfaces-devel/attachments/20100120/d5ab9d68/attachment.htm 


More information about the Qtinterfaces-devel mailing list