In R code, get("...", environment()) will retrieve the DOTSXP object. So another way is to write your wrapper functions like
someFunc <- function(...) { .External("someFunc_extern", get("...", ifnotfound=NULL) ) } If you're trying to mimic what substitute() et al do, you'll sometimes need to follow a chain of promises-that-have-promises in the PREXP slot until you get to the "real" one. Peter On Sat, Dec 14, 2013 at 6:12 AM, Romain François <rom...@r-enthusiasts.com> wrote: > Thanks. This works for me. See this gist: > https://gist.github.com/romainfrancois/7959531 > > Romain > > Le 13 déc. 2013 à 01:09, Hadley Wickham <h.wick...@gmail.com> a écrit : > >> Could you pass the environment and then look for the object called ... in it? >> >> f <- function(...) { >> .Call("my_fun", environment()) >> } >> >> I think (and may well be wrong) that you can use standard tools to >> find the DOTSXP object in that environment. >> >> Hadley >> >> >> On Thu, Dec 12, 2013 at 2:32 PM, Romain François >> <rom...@r-enthusiasts.com> wrote: >>> Hello, >>> >>> I’m looking for examples on how to manipulate the ... internally, e.g. in a >>> .Call or .External function. >>> >>> I’m particularly interested in accessing the environment in which each >>> contribution to ... can be evaluated. >>> >>> So far, I’m using tricks involving passing down the sys.calls() and >>> sys.frames() down to the C function. The documentation in >>> http://cran.r-project.org/doc/manuals/R-ints.html#Dot_002ddot_002ddot-arguments >>> did not help me a lot. >>> >>> Romain >>> ______________________________________________ >>> R-devel@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >> >> >> >> -- >> http://had.co.nz/ > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel