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