| #include <Rembedded.h> | |
| #include "embeddedRCall.h" | |
| int | |
| eval_R_command(const char *funcName, int argc, char *argv[]) | |
| { | |
| SEXP e; | |
| SEXP arg; | |
| int i; | |
| int errorOccurred; | |
| init_R(argc, argv); | |
| PROTECT(arg = allocVector(INTSXP, 10)); | |
| for(i = 0; i < LENGTH(arg); i++) INTEGER(arg)[i] = i + 1; | |
| PROTECT(e = lang2(install(funcName), arg)); | |
| /* Evaluate the call to the R function. | |
| Ignore the return value. | |
| */ | |
| R_tryEval(e, R_GlobalEnv, &errorOccurred); | |
| Rf_endEmbeddedR(0); | |
| UNPROTECT(2); | |
| return(0); | |
| } | |
| void | |
| init_R(int argc, char **argv) | |
| { | |
| int defaultArgc = 1; | |
| char *defaultArgv[] = {"Rtest"}; | |
| if(argc == 0 || argv == NULL) { | |
| argc = defaultArgc; | |
| argv = defaultArgv; | |
| } | |
| Rf_initEmbeddedR(argc, argv); | |
| } | |
| void | |
| end_R() | |
| { | |
| Rf_endEmbeddedR(0); | |
| } |