blob: b05f95f58c482dd954d941f7f0aa39c46d5da0f0 [file] [log] [blame]
#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);
}