[Rd] Rf_errorcall - translate to Pascal

Duncan Murdoch
Thu, 16 Feb 2006 10:44:26 -0000

On 2/16/2006 3:55 AM, Hans-Peter wrote:
> Hello!
>
> I (try to) convert the external R header files to Pascal (Delphi). At
> one place I stumbled over a macro that uses a method that is not
> declared in a LGPL header file:
>
> In Rinternals.h:
>    #define error_return(msg)	{ Rf_error(msg); return R_NilValue; }
>    #define errorcall_return(cl,msg){ Rf_errorcall(cl, msg); return
R_NilValue; }
>                                                   ~~~~~~~~
> In Error.h:
>     void Rf_error(const char *, ...);
>     [Rf_errorcall is not declared here, would be something like:
>      void Rf_errorcall(SEXP, const char *,...)]
>
> Is this by purpose or would it be possible to pull the Rf_errorcall
> declaration to the error.h file? It's not that I need the Rf_errorcall
> function, it's more that I am a bit pedantic and like to translate the
> complete thing (based on LGPL (which is more convenient in the Delphi
> world) - well you might not care about this).

Just to be clear:  this is a licensing issue, not a technical issue.
Error.h is licensed under the LGPL, but Defn.h (where Rf_errorcall is
declared) is under the more restrictive GPL.

> How is this handled in general, I mean, there might be other spots
> like this. Is it appropriate to ask such questions here?

I think this is a reasonable forum.

My feeling would be that this is probably an oversight; the public API
for R should be self-contained.  But I don't know if the fix is to
change errorcall_return or to move the Rf_errorcall declaration.
Generally things are not put in the public API if there's a feeling that
we'd like to change them; we are much more conservative about API changes.

I think it would be helpful to know the scope of the problem.  Could you
collect together a complete list of examples like this?

Duncan Murdoch