The R Project SVN R

Rev

Rev 41935 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 41935 Rev 42005
Line 275... Line 275...
275
 
275
 
276
static void *RObjToCPtr(SEXP s, int naok, int dup, int narg, int Fort,
276
static void *RObjToCPtr(SEXP s, int naok, int dup, int narg, int Fort,
277
			const char *name, R_toCConverter **converter,
277
			const char *name, R_toCConverter **converter,
278
			int targetType, char* encname)
278
			int targetType, char* encname)
279
{
279
{
280
    unsigned char *rawptr;
280
    Rbyte *rawptr;
281
    int *iptr;
281
    int *iptr;
282
    float *sptr;
282
    float *sptr;
283
    double *rptr;
283
    double *rptr;
284
    char **cptr, *fptr;
284
    char **cptr, *fptr;
285
    Rcomplex *zptr;
285
    Rcomplex *zptr;
Line 318... Line 318...
318
    switch(TYPEOF(s)) {
318
    switch(TYPEOF(s)) {
319
    case RAWSXP:
319
    case RAWSXP:
320
    n = LENGTH(s);
320
    n = LENGTH(s);
321
    rawptr = RAW(s);
321
    rawptr = RAW(s);
322
    if (dup) {
322
    if (dup) {
323
        rawptr = (unsigned char *) R_alloc(n, sizeof(unsigned char));
323
        rawptr = (Rbyte *) R_alloc(n, sizeof(Rbyte));
324
        for (i = 0; i < n; i++)
324
        for (i = 0; i < n; i++)
325
            rawptr[i] = RAW(s)[i];
325
            rawptr[i] = RAW(s)[i];
326
    }
326
    }
327
    return (void *) rawptr;
327
    return (void *) rawptr;
328
    break;
328
    break;
Line 466... Line 466...
466
 
466
 
467
 
467
 
468
static SEXP CPtrToRObj(void *p, SEXP arg, int Fort,
468
static SEXP CPtrToRObj(void *p, SEXP arg, int Fort,
469
		       R_NativePrimitiveArgType type, char *encname)
469
		       R_NativePrimitiveArgType type, char *encname)
470
{
470
{
471
    unsigned char *rawptr;
471
    Rbyte *rawptr;
472
    int *iptr, n=length(arg);
472
    int *iptr, n=length(arg);
473
    float *sptr;
473
    float *sptr;
474
    double *rptr;
474
    double *rptr;
475
    char **cptr, buf[256];
475
    char **cptr, buf[256];
476
    Rcomplex *zptr;
476
    Rcomplex *zptr;
Line 479... Line 479...
479
    SEXP s, t;
479
    SEXP s, t;
480
 
480
 
481
    switch(type) {
481
    switch(type) {
482
    case RAWSXP:
482
    case RAWSXP:
483
    s = allocVector(type, n);
483
    s = allocVector(type, n);
484
    rawptr = (unsigned char *)p;
484
    rawptr = (Rbyte *)p;
485
    for (i = 0; i < n; i++)
485
    for (i = 0; i < n; i++)
486
        RAW(s)[i] = rawptr[i];
486
        RAW(s)[i] = rawptr[i];
487
    break;
487
    break;
488
    case LGLSXP:
488
    case LGLSXP:
489
    case INTSXP:
489
    case INTSXP: