Steve Jaffe wrote: > > Thanks. I did misread the documentation, which says on p 68: > > Routines for use with the .C and .Fortran interfaces are described with > similar data structures [referring to R_CallMethodDef], > but which have two additional fields for describing the type and ???style??? > of > each argument > > So it is R_CMethodDef which has the 'type' and 'style' fields. Just to > confirm, if I specify a 'style' of R_ARG_IN does this suppress the copying > when using .C()?
Good, glad that the manual is not erroneous. Thanks for confirming that. At present, a style of R_ARG_IN does not avoid duplicating the object. That could easily be activated and that was the intent, coupled with parameters being declared const. It is highly desirable to have that explicitly checked by the compiler rather than just stated in the declarations. And the idea is that all this meta information can be determined programmatically by examining the C code (e.g. with the RGCCTranslationUnit package). > Actually, having now re-thought what I'm trying to do, it seems simpler just > to use DUP=False in the .C call. In which case it would seem to be a good > idea for me to make the signature of my C function declare the non-output > arguments to be const (eg const int* rather than int*). Yep. They are good things to declare when true. Do be careful with DUP = FALSE, as the help page says. Presumably there will be some parameters of your C function that are not const so that you can modify them and return results. (Unless of course the C routine is only of interest for its side effects such as writing to a file.) D. > > Thanks for your help. > > > Duncan Temple Lang wrote: > > > > > > > > Steve Jaffe wrote: > >> In Writing R Extensions it is said that R_CallMethodDef has two optional > >> fields, 'type' and 'style' (where 'style' is said to distinguish > >> in/out/inout arguments). > > > > Can you point us to the particular section and line that says > > this. I think it is for the R_CMethodDef structure, not the > > R_CallMethodDef. > > > > Indeed, in Rdynload.h > > > > typedef enum {R_ARG_IN, R_ARG_OUT, R_ARG_IN_OUT, R_IRRELEVANT} > > R_NativeArgStyle; > > > > -- > View this message in context: > http://www.nabble.com/R_CallMethodDef%3A-%27type%27-and-%27style%27-fields--tp25803313p25821291.html > Sent from the R devel mailing list archive at Nabble.com. > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel -- "There are men who can think no deeper than a fact" - Voltaire Duncan Temple Lang dun...@wald.ucdavis.edu Department of Statistics work: (530) 752-4782 4210 Mathematical Sciences Bldg. fax: (530) 752-7099 One Shields Ave. University of California at Davis Davis, CA 95616, USA
pgpucSqiOZbcQ.pgp
Description: PGP signature
______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel