Hello! Thanks for your answers!
--- 2006/2/16, Duncan Murdoch <[EMAIL PROTECTED]>: > I think it would be helpful to know the scope of the problem. Could you > collect together a complete list of examples like this? yes, I will do that. Until now it's only the one function mentioned and the 2 macro groups. Btw: your Delphi notes were great to get me started !!! --- 2006/2/16, Rainer M Krug <[EMAIL PROTECTED]>: > Hans-Peter wrote: > > I (try to) convert the external R header files to Pascal (Delphi). At > Sounds interesting - Could you keep me updated about your progress? I > would be interested in the header files to use them in the analysis of > simulations from Delphi. Sure, but I cannot promise anything. I did the same for Matlab but it's much more difficult with R. --- 2006/2/16, Prof Brian Ripley <[EMAIL PROTECTED]>: > Yes, and their names are case-sensitive too. So it is intentional that > errorcall is not in R_Ext/Error.h. Since it is needed for writing > front-ends and now mentioned in Writing R Extensions it should probably be > in Rinternals.h. that would be great! >But note that is basically the only way that a non-core > programmer is going to be writing code that gets passed 'call' objects. ok, thanks > > As a sidenote: in Defn.h are two macrogroups: > This is intentional. Both Defn.h and Rinternals.h have these in a section > protected by > #ifdef USE_RINTERNALS > #endif > and that section should not be regarded as public. I know that USE_RINTERNALS is ...internal and can change. But I had to translate it nevertheless, because I need at least the type definition "SEXP". And e.g. in chapter "4.8.2 Calling .External" there are code samples with the macros CADR, TYPEOF, CHAR, STRING_ELT, ... which AFAIK can run in Pascal only if they are redefined as pascal functions. Regarding the possible changes I have to think about DUnit tests to catch them. >There _are_ (mis-titled) sections > /* Promise Access Macros */ > /* Hashing Macros */ > in Rinternals.h, and those are the function equivalents defined for > external use. Sorry, I don't understand. Eg. in Rinternals.h the first entry in /* Promise Access Macros */ is: SEXP (PRCODE)(SEXP x); ~~~~~~~ Do you now mean, that the macro PRCODE is defined for external use? On the other hand, it's nowhere in the "writing R extensions documentation". But it's e.g. used in the library methods (in the function: methods-List_dispatch.c). If its meant for external use, then AFAIK the only way to use this macro in Pascal code is to translate it as a function, like e.g.: function rhPrcode( _x: pSexp ): pSexp; begin result:= _x.promsxp.expr; end; <license related> And now it's a bit unnice, that "_x.promsxp.expr" is defined in Defn.h [as: ((x)->u.promsxp.expr)] and not in Rinternal.h. With almost all other macros, e.g. FORMALS this is different, they are defined in Rinternal.h [e.g.: ((x)->u.closxp.formals)]. In this macro case I think its also for strict license interpretations irrelevant, because SEXPREC and promsxp_struct are fully declared in Rinternal.h. But it's not nice and maybe I just skip it. </license related> -- Regards, Hans-Peter ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel