[Rd] R callbacks
Simon Urbanek
simon.urbanek at r-project.org
Tue Apr 3 16:11:03 CEST 2007
On Apr 2, 2007, at 8:51 PM, Deepayan Sarkar wrote:
> Hi,
>
> I'm trying to understand (mostly from the R-exts manual) how to use
> the callbacks declared in Rinterface.h. As a first attempt, I'm trying
> to redefine ptr_R_WriteConsole in a very trivial manner. Here's my
> code:
>
> ---------------
> $ cat altr.c
>
> int Rf_initialize_R(int ac, char **av);
>
> #define R_INTERFACE_PTRS 1
> #include <Rinterface.h>
>
> extern int R_running_as_main_program;
>
> static void my_R_WriteConsole(char *buf, int len)
> {
> printf("R<< %s", buf);
> }
>
> int main(int ac, char **av)
> {
> R_running_as_main_program = 1;
> ptr_R_WriteConsole = my_R_WriteConsole;
> Rf_initialize_R(ac, av);
> Rf_mainloop();
> return 0;
> }
> ---------------
>
> I compile and run this in bash with
>
>
> RPROG=R
>
> INC=`${RPROG} CMD config --cppflags`
> LDF=`${RPROG} CMD config --ldflags`
> export LD_LIBRARY_PATH=`${RPROG} RHOME`/lib
> gcc -o altr ${INC} ${LDF} altr.c
>
> ${RPROG} CMD ./altr
>
> However, my customized version seems not to be used. What am I
> missing?
>
1) see Byron's e-mail
2) by default R uses stdout/err connections instead of the console
API, you need to disable that
so the resulting code should look like this:
Rf_initialize_R(ac, av);
ptr_R_WriteConsole = my_R_WriteConsole;
R_Outputfile = NULL;
R_Consolefile = NULL;
Rf_mainloop();
Cheers,
Simon
More information about the R-devel
mailing list