[Rcpp-devel] Dispatching based on SEXPTYPE

Davor Cubranic cubranic at stat.ubc.ca
Mon Nov 26 21:52:22 CET 2012


Is this macro intended to be used in other, similar contexts? Otherwise, why not have "switch" inside unique2, as in Hadley's original code?

Davor


On 2012-11-22, at 7:25 AM, Hadley Wickham wrote:

>> #define DISPATCH_METHOD(method, x)  \
>>  switch( TYPEOF(x) ){          \
>>    case REALSXP:                   \
>>      return method<REALSXP>(x);    \
>>    case INTSXP:                    \
>>      return method<INTSXP>(x);     \
>>    case STRSXP:                    \
>>      return method<STRSXP>(x);     \
>>    case LGLSXP:                    \
>>      return method<LGLSXP>(x);     \
>>    default:                        \
>>      Rf_error("Unsupported type"); \
>>      return x;                     \
>>  }
> 
> Why do we need a macro here? Is it not possible to pass in method as a
> function?  It seems like there must be a more elegant way to do
> dynamic dispatch.
> 
> Hadley
> 
> 
> -- 
> RStudio / Rice University
> http://had.co.nz/
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel



More information about the Rcpp-devel mailing list