On Wed, 4 Jun 2008, Prof Brian Ripley wrote: > Bill, > > R's R.h already has > > typedef double Sfloat; > typedef int Sint; > #define SINT_MAX INT_MAX > #define SINT_MIN INT_MIN
Whoops, I forgot the name and that I'd put it into Splus's R.h (and now in someing included by it) a while back. Quite a few R packages use it. I was looking through "Writing R Extensions" for mention of such a thing and didn't find it. Perhaps the 'int's in the examples in Chapter 5 could be changed to 'Sint's. A few packages (gee,lasso2,locfit,AnalyzeFMRI) used to typedef Sint (for R and Splus), but since you already have it in R we can go with it. In the current development version of Splus it has an associated #ifdef/#define so packages can avoid it if needed: #ifndef HAVE_SINT_TYPEDEF typedef long Sint ; /* C type for S language "integer", is int in R */ #define HAVE_SINT_TYPEDEF #endif To make the packages even more portable with respect to int/long things, we need to encourage the use of casts when interfacing to non-S code. E.g., Sint x_zero = INTEGER(x)[0] ; Rprintf("First element of x is %ld\n", (long)x_zero); will print x[0] properly in R and Splus but Rprintf("First element of x is %d\n", x_zero); will not work properly in Splus. Thanks, Bill ---------------------------------------------------------------------------- Bill Dunlap Insightful Corporation bill at insightful dot com 360-428-8146 "All statements in this message represent the opinions of the author and do not necessarily reflect Insightful Corporation policy or position." ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel