Hello List, I wonder how to deal with the R SEXP Data structure in native calls.
*"Technically, [a SEXP] is a pointer to a structure with typedef SEXPREC. A SEXP is a variant type, with subtypes for all R’s data structures"* E.g. - INTSXP: integer vector - LGLSXP: logical vector - STRSXP: character vector - ... (and a dozen more) When I have an imaginary generic C function like this: SEXP fun(SEXP x, char * cmd) how can I specify Return Value/Arguments in a 'native' call, if I cannot know in advance to which R subtype the SEXP Points? On the one hand, a SEXP is like a C Datatype for a Lisp list, so one could think that's ideal for calling C from Pil with list args and list return values. On the other hand, how can one give the primitive specifications in the specification lists for 'native' args/return vals, without knowing the concrete subtype (R data structure), i.e. when CMD can be any R command that may take/return any of the subtypes (char, logical, int, vector, list ....)? Is there maybe a generic solution on the 'native' side too, without the primitive specifications? Thanks in advance and Cheers Thorsten PS For those interested here two links: Rinternals.h source code: r-source/Rinternals.h at a1425adea54bcc98eef86081522b5dbb3e149cdc · wch/r-source (github.com) <https://github.com/wch/r-source/blob/a1425adea54bcc98eef86081522b5dbb3e149cdc/src/include/Rinternals.h> R's C Interface (blog post explaining the code/data structures) R's C interface · Advanced R. (had.co.nz) <http://adv-r.had.co.nz/C-interface.html>.