The R Project SVN R

Rev

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

Rev 45667 Rev 46140
Line 978... Line 978...
978
/* cbind(deparse.level, ...) and rbind(deparse.level, ...) : */
978
/* cbind(deparse.level, ...) and rbind(deparse.level, ...) : */
979
SEXP attribute_hidden do_bind(SEXP call, SEXP op, SEXP args, SEXP env)
979
SEXP attribute_hidden do_bind(SEXP call, SEXP op, SEXP args, SEXP env)
980
{
980
{
981
    SEXP a, t, obj, classlist, classname, method, classmethod, rho;
981
    SEXP a, t, obj, classlist, classname, method, classmethod, rho;
982
    const char *generic;
982
    const char *generic;
983
    int mode, deparse_level, compatible=1;
983
    int mode, deparse_level;
-
 
984
    Rboolean compatible = TRUE;
984
    struct BindData data;
985
    struct BindData data;
985
    char buf[512];
986
    char buf[512];
986
    const char *s, *klass;
987
    const char *s, *klass;
987
 
988
 
988
    /* since R 2.2.0: first argument "deparse.level" */
989
    /* since R 2.2.0: first argument "deparse.level" */
Line 1002... Line 1003...
1002
     *
1003
     *
1003
     * 1) For each argument we get the list of possible class
1004
     * 1) For each argument we get the list of possible class
1004
     *	  memberships from the class attribute.
1005
     *	  memberships from the class attribute.
1005
     *
1006
     *
1006
     * 2) We inspect each class in turn to see if there is an
1007
     * 2) We inspect each class in turn to see if there is an
1007
     *	  an applicable method.
1008
     *	  applicable method.
1008
     *
1009
     *
1009
     * 3) If we find an applicable method we make sure that it is
1010
     * 3) If we find an applicable method we make sure that it is
1010
     *	  identical to any method determined for prior arguments.
1011
     *	  identical to any method determined for prior arguments.
1011
     *	  If it is identical, we proceed, otherwise we immediately
1012
     *	  If it is identical, we proceed, otherwise we immediately
1012
     *	  drop through to the default code.
1013
     *	  drop through to the default code.
Line 1043... Line 1044...
1043
			/* compatible we drop through to the */
1044
			/* compatible we drop through to the */
1044
			/* default method. */
1045
			/* default method. */
1045
			if (strcmp(klass, s)) {
1046
			if (strcmp(klass, s)) {
1046
			    method = R_NilValue;
1047
			    method = R_NilValue;
1047
			    /* need to end both loops */
1048
			    /* need to end both loops */
1048
			    compatible = 0;
1049
			    compatible = FALSE;
1049
			}
1050
			}
1050
		    }
1051
		    }
1051
		    break; /* go to next parameter */
1052
		    break; /* go to next parameter */
1052
		}
1053
		}
1053
	    }
1054
	    }