The R Project SVN R

Rev

Rev 28254 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 28254 Rev 28362
Line 458... Line 458...
458
}
458
}
459
 
459
 
460
/* vector(mode="logical", length=0) */
460
/* vector(mode="logical", length=0) */
461
SEXP do_makevector(SEXP call, SEXP op, SEXP args, SEXP rho)
461
SEXP do_makevector(SEXP call, SEXP op, SEXP args, SEXP rho)
462
{
462
{
463
    int len, i;
463
    R_len_t len, i;
464
    SEXP s;
464
    SEXP s;
465
    SEXPTYPE mode;
465
    SEXPTYPE mode;
466
    checkArity(op, args);
466
    checkArity(op, args);
467
    len = asInteger(CADR(args));
467
    len = asVecSize(CADR(args));
468
    s = coerceVector(CAR(args), STRSXP);
468
    s = coerceVector(CAR(args), STRSXP);
469
    if (length(s) == 0)
469
    if (length(s) == 0)
470
	error("vector: zero-length type argument");
470
	error("vector: zero-length type argument");
471
    mode = str2type(CHAR(STRING_ELT(s, 0)));
471
    mode = str2type(CHAR(STRING_ELT(s, 0)));
472
    if (mode == -1 && streql(CHAR(STRING_ELT(s, 0)), "double"))
472
    if (mode == -1 && streql(CHAR(STRING_ELT(s, 0)), "double"))
Line 506... Line 506...
506
 
506
 
507
/* do_lengthgets: assign a length to a vector or a list */
507
/* do_lengthgets: assign a length to a vector or a list */
508
/* (if it is vectorizable). We could probably be fairly */
508
/* (if it is vectorizable). We could probably be fairly */
509
/* clever with memory here if we wanted to. */
509
/* clever with memory here if we wanted to. */
510
 
510
 
511
SEXP lengthgets(SEXP x, int len)
511
SEXP lengthgets(SEXP x, R_len_t len)
512
{
512
{
513
    int lenx, i;
513
    R_len_t lenx, i;
514
    SEXP rval, names, xnames, t;
514
    SEXP rval, names, xnames, t;
515
    if (!isVector(x) && !isVectorizable(x))
515
    if (!isVector(x) && !isVectorizable(x))
516
	error("can not set length of non-vector");
516
	error("can not set length of non-vector");
517
    lenx = length(x);
517
    lenx = length(x);
518
    if (lenx == len)
518
    if (lenx == len)
Line 587... Line 587...
587
}
587
}
588
 
588
 
589
 
589
 
590
SEXP do_lengthgets(SEXP call, SEXP op, SEXP args, SEXP rho)
590
SEXP do_lengthgets(SEXP call, SEXP op, SEXP args, SEXP rho)
591
{
591
{
592
    int len;
592
    R_len_t len;
593
    SEXP x;
593
    SEXP x;
594
    checkArity(op, args);
594
    checkArity(op, args);
595
    x = CAR(args);
595
    x = CAR(args);
596
    if (!isVector(x) && !isVectorizable(x))
596
    if (!isVector(x) && !isVectorizable(x))
597
       error("length<- invalid first argument");
597
       error("length<- invalid first argument");
598
    if (length(CADR(args)) != 1)
598
    if (length(CADR(args)) != 1)
599
       error("length<- invalid second argument");
599
       error("length<- invalid second argument");
600
    len = asInteger(CADR(args));
600
    len = asVecSize(CADR(args));
601
    if (len == NA_INTEGER)
601
    if (len == NA_INTEGER)
602
       error("length<- missing value for length");
602
       error("length<- missing value for length");
603
    return lengthgets(x, len);
603
    return lengthgets(x, len);
604
}
604
}
605
 
605