1 /* A copy of embeddedRCall.h found in R's source directory
2 under tests/Embedding/ */
3 #include <Rembedded.h>
4 #include "AFNI_embeddedRCall.h"
5
6 int
eval_R_command(const char * funcName,int argc,char * argv[])7 eval_R_command(const char *funcName, int argc, char *argv[])
8 {
9 SEXP e;
10 SEXP arg;
11
12 int i;
13 int errorOccurred;
14 init_R(argc, argv);
15
16 PROTECT(arg = allocVector(INTSXP, 10));
17 for(i = 0; i < LENGTH(arg); i++) INTEGER(arg)[i] = i + 1;
18
19 PROTECT(e = lang2(install(funcName), arg));
20
21 /* Evaluate the call to the R function.
22 Ignore the return value.
23 */
24 R_tryEval(e, R_GlobalEnv, &errorOccurred);
25
26 Rf_endEmbeddedR(0);
27 UNPROTECT(2);
28 return(0);
29 }
30
31 void
init_R(int argc,char ** argv)32 init_R(int argc, char **argv)
33 {
34 int defaultArgc = 1;
35 char *defaultArgv[] = {"Rtest"};
36
37 if(argc == 0 || argv == NULL) {
38 argc = defaultArgc;
39 argv = defaultArgv;
40 }
41 Rf_initEmbeddedR(argc, argv);
42 }
43
44 void
end_R()45 end_R()
46 {
47 Rf_endEmbeddedR(0);
48 }
49