[Rd] Minor inconsistencies in tools:::funAPI()
Ivan Krylov
|kry|ov @end|ng |rom d|@root@org
Tue Jul 30 19:10:26 CEST 2024
В Mon, 29 Jul 2024 16:29:42 -0400
Toby Hocking <tdhock5 using gmail.com> пишет:
> Can you please clarify what input files should be used with your
> proposed function? I tried a few files in r-svn/src/include and one of
> them gave me an error.
This is a good illustration of the brittleness of the regexp approach.
I focused on the header files marked as API:
> tools:::funAPI()$loc |> unique() |> setdiff('WRE')
[1] "R_ext/GraphicsDevice.h" "Rmath.h"
[3] "R_ext/GraphicsEngine.h" "R_ext/BLAS.h"
[5] "R_ext/Lapack.h" "R_ext/Linpack.h"
[7] "Rembedded.h" "Rinterface.h"
[9] "R_ext/Altrep.h" "R_ext/Memory.h"
[11] "R_ext/RStartup.h" "R_ext/Arith.h"
[13] "R_ext/Random.h" "R_ext/Error.h"
I also wanted the function not to crash with Rinternals.h, but getdecl
/ getdecl2 / tools:::getFunsHdr all give different answers for it.
I think this can be done in a more reliable manner using a recursive
descent parser, but that would take some screenfuls of R that will need
to be very carefully written.
Speaking of discrepancies, here are a few functions declared in API
headers but marked with attribute_hidden:
R_ext/Error.h:NORET void WrongArgCount(const char *);
R_ext/Memory.h:int R_gc_running(void);
And some minor headaches for people who would like a full
programmatic list of entry points:
- The functions [dpq]norm are unconditionally remapped to dnorm4,
pnorm5, qnorm5, and the header file parser only picks up the
numbered function names.
- 'optimfn', 'optimgr', 'integr_fn' are marked in WRE as @apifun
despite not directly being functions or symbol names exported by R
binaries. May I suggest a separate category for types?
--
Best regards,
Ivan
More information about the R-devel
mailing list