[Rd] Patch to address (PR#7853) -- tested briefly, seems to
ripley at stats.ox.ac.uk
ripley at stats.ox.ac.uk
Thu May 12 08:32:34 CEST 2005
Thank you for the patch.
To clarify: this is not a bug. ?.C says
The mapping of the types of R arguments to C or Fortran arguments
in '.C' or '.Fortran' is
R C Fortran
integer int * integer
numeric double * double precision
- or - float * real
complex Rcomplex * double complex
logical int * integer
character char ** [see below]
list SEXP * not allowed
other SEXP not allowed
and `raw' is in the `other' category. So this would be a change in
behaviour and needs some changes to the documentation. We will do that
for 2.2.0.
Two hints (more for R-devel than just you).
1) Please provide a patch against the current sources, not 2.0.0. (it
worked, with a bit of fiddling).
2) Please _attach_ patches, as your mailer wrapped this one.
On Thu, 12 May 2005 keithf at amnis.com wrote:
> --- dotcode.c 2004-09-05 02:31:57.000000000 -0700
> +++ /usr/local/src/R-2.0.0/src/main/dotcode.c 2005-05-11
> 12:24:11.000000000 -0700
> @@ -190,6 +190,7 @@
> static void *RObjToCPtr(SEXP s, int naok, int dup, int narg, int Fort,
> const char *name, R_toCConverter **converter,
> int targetType)
> {
> + unsigned char *rawptr;
> int *iptr;
> float *sptr;
> double *rptr;
> @@ -228,6 +229,16 @@
> }
>
> switch(TYPEOF(s)) {
> + case RAWSXP:
> + n = LENGTH(s);
> + rawptr = RAW(s);
> + if (dup) {
> + rawptr = (unsigned char *) R_alloc(n, sizeof(unsigned char));
> + for (i = 0; i < n; i++)
> + rawptr[i] = RAW(s)[i];
> + }
> + return (void *) rawptr;
> + break;
> case LGLSXP:
> case INTSXP:
> n = LENGTH(s);
> @@ -329,6 +340,7 @@
>
> static SEXP CPtrToRObj(void *p, SEXP arg, int Fort,
> R_NativePrimitiveArgType type)
> {
> + unsigned char *rawptr;
> int *iptr, n=length(arg);
> float *sptr;
> double *rptr;
> @@ -339,6 +351,12 @@
> SEXP s, t;
>
> switch(type) {
> + case RAWSXP:
> + s = allocVector(type, n);
> + rawptr = (unsigned char *)p;
> + for (i = 0; i < n; i++)
> + RAW(s)[i] = rawptr[i];
> + break;
> case LGLSXP:
> case INTSXP:
> s = allocVector(type, n);
>
> ______________________________________________
> R-devel at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list