The R Project SVN R

Rev

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

Rev 26763 Rev 27263
Line 454... Line 454...
454
    if (PkgSymbol == NULL) PkgSymbol = install("PACKAGE");
454
    if (PkgSymbol == NULL) PkgSymbol = install("PACKAGE");
455
    strcpy(DLLname, "");
455
    strcpy(DLLname, "");
456
    args = pkgtrim(args);
456
    args = pkgtrim(args);
457
 
457
 
458
    if (!(fun=R_FindSymbol(CHAR(STRING_ELT(op, 0)), DLLname, NULL)))
458
    if (!(fun=R_FindSymbol(CHAR(STRING_ELT(op, 0)), DLLname, NULL)))
-
 
459
	if(strlen(DLLname))
-
 
460
	    errorcall(call,
-
 
461
		      ".External function name not in DLL for package %s", 
-
 
462
		      DLLname);
-
 
463
	else
459
	errorcall(call, "C function name not in load table");
464
	    errorcall(call, ".External function name not in load table");
460
 
465
 
461
    if(symbol.symbol.external && symbol.symbol.external->numArgs > -1) {
466
    if(symbol.symbol.external && symbol.symbol.external->numArgs > -1) {
462
	if(symbol.symbol.external->numArgs != length(args))
467
	if(symbol.symbol.external->numArgs != length(args))
463
	    error("Incorrect number of arguments (%d), expecting %d for %s",
468
	    error("Incorrect number of arguments (%d), expecting %d for %s",
464
		  length(args), symbol.symbol.external->numArgs, CHAR(STRING_ELT(op, 0)));
469
		  length(args), symbol.symbol.external->numArgs, CHAR(STRING_ELT(op, 0)));
Line 484... Line 489...
484
    if (PkgSymbol == NULL) PkgSymbol = install("PACKAGE");
489
    if (PkgSymbol == NULL) PkgSymbol = install("PACKAGE");
485
    strcpy(DLLname, "");
490
    strcpy(DLLname, "");
486
    args = pkgtrim(args);
491
    args = pkgtrim(args);
487
 
492
 
488
    if (!(fun=R_FindSymbol(CHAR(STRING_ELT(op, 0)), DLLname, &symbol)))
493
    if (!(fun=R_FindSymbol(CHAR(STRING_ELT(op, 0)), DLLname, &symbol)))
-
 
494
	if(strlen(DLLname))
-
 
495
	    errorcall(call, ".Call function name not in DLL for package %s", 
-
 
496
		      DLLname);
-
 
497
	else
489
        errorcall(call, ".Call function name not in load table");
498
	    errorcall(call, ".Call function name not in load table");
490
    args = CDR(args);
499
    args = CDR(args);
491
 
500
 
492
    for(nargs = 0, pargs = args ; pargs != R_NilValue; pargs = CDR(pargs)) {
501
    for(nargs = 0, pargs = args ; pargs != R_NilValue; pargs = CDR(pargs)) {
493
        if (nargs == MAX_ARGS)
502
        if (nargs == MAX_ARGS)
494
            errorcall(call, "too many arguments in foreign function call");
503
            errorcall(call, "too many arguments in foreign function call");
Line 1230... Line 1239...
1230
	p++;
1239
	p++;
1231
	q++;
1240
	q++;
1232
    }
1241
    }
1233
 
1242
 
1234
    if (!(fun = R_FindSymbol(buf, DLLname, &symbol)))
1243
    if (!(fun = R_FindSymbol(buf, DLLname, &symbol)))
-
 
1244
	if(strlen(DLLname))
-
 
1245
	    errorcall(call, "%s function name not in DLL for package %s",
-
 
1246
		      which ? "Fortran" : "C", DLLname);
-
 
1247
	else
1235
	errorcall(call, "C/Fortran function name not in load table");
1248
	    errorcall(call, "%s function name not in load table",
-
 
1249
		      which ? "Fortran" : "C");
1236
 
1250
 
1237
    if(symbol.symbol.c && symbol.symbol.c->numArgs > -1) {
1251
    if(symbol.symbol.c && symbol.symbol.c->numArgs > -1) {
1238
	if(symbol.symbol.c->numArgs != nargs)
1252
	if(symbol.symbol.c->numArgs != nargs)
1239
	    error("Incorrect number of arguments (%d), expecting %d for %s",
1253
	    error("Incorrect number of arguments (%d), expecting %d for %s",
1240
		  nargs, symbol.symbol.c->numArgs, buf);
1254
		  nargs, symbol.symbol.c->numArgs, buf);