The R Project SVN R

Rev

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

Rev 77496 Rev 77888
Line 432... Line 432...
432
    checkArity(op, args);
432
    checkArity(op, args);
433
    check1arg(args, call, "x");
433
    check1arg(args, call, "x");
434
 
434
 
435
    SEXP x = CAR(args), ans;
435
    SEXP x = CAR(args), ans;
436
 
436
 
-
 
437
    /* DispatchOrEval internal generic: length */
437
    if (isObject(x) &&
438
    if (isObject(x) &&
438
       DispatchOrEval(call, op, "length", args, rho, &ans, 0, 1)) {
439
       DispatchOrEval(call, op, "length", args, rho, &ans, 0, 1)) {
439
	if (length(ans) == 1 && TYPEOF(ans) == REALSXP) {
440
	if (length(ans) == 1 && TYPEOF(ans) == REALSXP) {
440
	    double d = REAL(ans)[0];
441
	    double d = REAL(ans)[0];
441
	    if (R_FINITE(d) && d >= 0. && d <= INT_MAX && floor(d) == d) {
442
	    if (R_FINITE(d) && d >= 0. && d <= INT_MAX && floor(d) == d) {
Line 470... Line 471...
470
    if (isObject(x)) {
471
    if (isObject(x)) {
471
        SEXP len, args;
472
        SEXP len, args;
472
        if (length_op == NULL)
473
        if (length_op == NULL)
473
            length_op = R_Primitive("length");
474
            length_op = R_Primitive("length");
474
        PROTECT(args = list1(x));
475
        PROTECT(args = list1(x));
-
 
476
	/* DispatchOrEval internal generic: length */
475
        if (DispatchOrEval(call, length_op, "length", args, rho, &len, 0, 1)) {
477
        if (DispatchOrEval(call, length_op, "length", args, rho, &len, 0, 1)) {
476
            UNPROTECT(1);
478
            UNPROTECT(1);
477
            return (R_xlen_t)
479
            return (R_xlen_t)
478
                (TYPEOF(len) == REALSXP ? REAL(len)[0] : asInteger(len));
480
                (TYPEOF(len) == REALSXP ? REAL(len)[0] : asInteger(len));
479
        }
481
        }
Line 517... Line 519...
517
    int *ans_elt;
519
    int *ans_elt;
518
    int useNames = asLogical(CADR(args));
520
    int useNames = asLogical(CADR(args));
519
    if (useNames == NA_LOGICAL)
521
    if (useNames == NA_LOGICAL)
520
	error(_("invalid '%s' value"), "use.names");
522
	error(_("invalid '%s' value"), "use.names");
521
 
523
 
-
 
524
    /* DispatchOrEval internal generic: lengths */
522
    if (DispatchOrEval(call, op, "lengths", args, rho, &ans, 0, 1))
525
    if (DispatchOrEval(call, op, "lengths", args, rho, &ans, 0, 1))
523
      return(ans);
526
      return(ans);
524
 
527
 
525
    Rboolean isList = isVectorList(x) || isS4(x);
528
    Rboolean isList = isVectorList(x) || isS4(x);
526
    if(!isList) switch(TYPEOF(x)) {
529
    if(!isList) switch(TYPEOF(x)) {