Skip to content
Back to formatted view

Raw Message

Message-ID: <4E15B641.3060800@r-enthusiasts.com>
Date: 2011-07-07T13:36:01Z
From: Romain Francois
Subject: [Rcpp-devel] templated NA
In-Reply-To: <BANLkTimy2LUkO44zAsnwG+ex0XRAu-N4tA@mail.gmail.com>

Le 23/06/11 20:48, Andrew Redd a ?crit :
> Is there a templated version of NA with Rcpp, or perhaps some sugar
> statement, such that the following might be valid statements?
>
> typedef double mytime;
> const mytime time_unknown = Rcpp::NA<mytime>;
>
> Thanks,
> Andrew

You might get what you want using a combination of the traits::get_na 
and traits::r_sexptype_traits templates.

Something like :

require( Rcpp )
require( inline )

inc <- '
     typedef double mtime ;

     template <typename T>
     inline T NA(){
         return traits::get_na< traits::r_sexptype_traits<T>::rtype >() ;
     }


'
fx <- cxxfunction( , '
     mtime na = NA<mtime>() ;
     return wrap( na ) ;
', inc = inc, plugin = "Rcpp" )
fx()


-- 
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
http://romain-francois.com
|- http://bit.ly/lJoWbH : Montpellier Com?die Club - Juin 2011
|- http://bit.ly/kaSV6U : Stand up set at Up The Creek
`- http://bit.ly/hdKhCy : Rcpp article in JSS