The R Project SVN R

Rev

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

Rev 31593 Rev 31601
Line 616... Line 616...
616
 
616
 
617
/* .Call(name, <args>) */
617
/* .Call(name, <args>) */
618
SEXP do_dotcall(SEXP call, SEXP op, SEXP args, SEXP env)
618
SEXP do_dotcall(SEXP call, SEXP op, SEXP args, SEXP env)
619
{
619
{
620
    DL_FUNC fun = NULL;
620
    DL_FUNC fun = NULL;
621
    SEXP retval, cargs[MAX_ARGS], pargs;
621
    SEXP retval, nm, cargs[MAX_ARGS], pargs;
622
    R_RegisteredNativeSymbol symbol = {R_CALL_SYM, {NULL}, NULL};
622
    R_RegisteredNativeSymbol symbol = {R_CALL_SYM, {NULL}, NULL};
623
    int nargs;
623
    int nargs;
624
    char *vmax = vmaxget();
624
    char *vmax = vmaxget();
625
    char buf[128];
625
    char buf[128];
626
 
626
 
-
 
627
    nm = CAR(args);
627
    args = resolveNativeRoutine(args, &fun, &symbol, buf, NULL, NULL,
628
    args = resolveNativeRoutine(args, &fun, &symbol, buf, NULL, NULL,
628
				NULL, call);
629
				NULL, call);
629
    args = CDR(args);
630
    args = CDR(args);
630
 
631
 
631
    for(nargs = 0, pargs = args ; pargs != R_NilValue; pargs = CDR(pargs)) {
632
    for(nargs = 0, pargs = args ; pargs != R_NilValue; pargs = CDR(pargs)) {
Line 636... Line 637...
636
    }
637
    }
637
    if(symbol.symbol.call && symbol.symbol.call->numArgs > -1) {
638
    if(symbol.symbol.call && symbol.symbol.call->numArgs > -1) {
638
	if(symbol.symbol.call->numArgs != nargs)
639
	if(symbol.symbol.call->numArgs != nargs)
639
	    error("Incorrect number of arguments (%d), expecting %d for %s",
640
	    error("Incorrect number of arguments (%d), expecting %d for %s",
640
		  nargs, symbol.symbol.call->numArgs,
641
		  nargs, symbol.symbol.call->numArgs,
641
		  CHAR(STRING_ELT(CAR(args), 0)));
642
		  CHAR(STRING_ELT(nm, 0)));
642
    }
643
    }
643
 
644
 
644
    retval = R_NilValue;	/* -Wall */
645
    retval = R_NilValue;	/* -Wall */
645
    switch (nargs) {
646
    switch (nargs) {
646
    case 0:
647
    case 0: