On Mon, May 24, 2010 at 9:03 AM, Stefano Baraldo
<stefano.bara...@gmail.com> wrote:
> Hi all.
> I began examining the R source code in the last few days, for a better 
> understanding of its structure. I read the manuals and digged deeply (maybe 
> not enough?) into the source code, but I couldn't totally understand how 
> .Primitive() works. Its effects, if I understand well, are quite clear to me 
> (calling the C compiled counterpart of a "primitive" function), but where is 
> its definition? The only things I was able to find were:
> -in src/library/base/R/zzz.R, its creation in the .ArgsEnv environment, but 
> with NULL body!
> -in src/main/names.c, the association of .Primitive() to the C function 
> do_primitive, which I cannot find anywhere else in the source code.
> Does any of you know where should I look?

 First, I reckon you should be looking on the r-dev mailing list! :)

 Secondly, if you are using a Unix machine with GNU utils, 'grep -nr'
is your friend:

$ grep -nr do_primitive .
./src/gnuwin32/Rdll.hide:864: do_primitive
./src/include/Internal.h:365:SEXP do_primitive(SEXP, SEXP, SEXP, SEXP);
./src/main/names.c:117:{".Primitive",   do_primitive,   0,      1,      1,      
{PP_FUNCALL,
PREC_FN,          0}},
./src/main/names.c:1008:SEXP attribute_hidden do_primitive(SEXP call,
SEXP op, SEXP args, SEXP env)

  - so I'm not sure why you didn't spot the do_primitive definition on
line 1008:

SEXP attribute_hidden do_primitive(SEXP call, SEXP op, SEXP args, SEXP env)
{
    SEXP name;
    int i;
    checkArity(op, args);
    name = CAR(args);
    if (!isString(name) || length(name) < 1 ||

etc etc.

 If you are going to do a lot of this kind of nosing around, it's
worth looking at an IDE that can help by tracking where function
definitions are. For example, emacs with the etags system. Tutorial
here:

http://www.linuxjournal.com/article/2821?page=0,1

Barry

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to