| #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); |
| } |