[Rd] too many arguments in foreign function call

Warnes, Gregory R
Mon, 16 Jul 2001 14:50:25 -0000

I would like to create an R package that will depend on the ability to use
more than 65 parameters.  Would it be reasonable to expect this patch (or
something equivalent) to be part of , say R > 1.3.1 ?

Would it help if I submit an official bug report?

-Greg


  From: Gregory R. Warnes [mailto:greg@warnes.net]
  >
  > Duncan Templ Lang wrote:
  > >
  > > Gregory R. Warnes wrote:
  > > >
  > > > Hi all,
  > > >
  > > >
  > > > Looking at the code in src/main/dotcode.c, I see that
  > MAX_ARGS is set to
  > > > 65.
  > > >
  > > > While it is possible to work around this limitation, it seems
  > > > arbitrary. I propose increasing the arbitrary value to
  > 255 and adding
  > > > appropriate documentation to the Foreign manual page.
  > > >
  > > > Any objections/comments?
  > >
  > > Unfortunately, it isn't quite as simple as that. The code
  > that uses
  > > MAX_ARGS would also need to be extended and that involves
  > adding the
  > > remaining cases to the switch statement in do_dotCode() and
  > > do_dotcall() in src/main/dotcode.c There's no reason why
  > it can't be
  > > done. Somebody simply has to generate the appropriate code,
  > > presumably programmatically with a little script. I
  > recall this was
  > > extended in S4, but 64 was adequate for that context.
  > >
  > > I imagine that there are some systems limit the number of
  > arguments
  > > one can have to a routine.
  > >
  >
  > OK.  I wrote a little R script to generate the necessary case
  > statements.  Since these code chunks are rather large (7140 lines
  > each!), I modifed src/main/dotcode to #include the case
  > statements from
  > the (new) files /src/main/dotcode_cases.c and
  > /src/main/dotcall_cases.c
  > .   I'm not sure that this is the best way to do this, but including
  > these code chunks in dotcode.c makes it unmanagable.
  >
  > While I was making and (this time) testing the changes, I
  > noticed that
  > one declaration had the value 65 hardcoded rather than
  > using MAX_ARGS.
  >
  > I've uploaded a tgz file containing the patch and the R script that
  > generated the case statement/call code to
  > ftp::/cran.r-project.org/incoming/dotcall_255.tgz
  >
  > With this patch applied, the fortran subroutin I'm using
  > now works fine
  > with 85 arguments.  I imagine that it should be tested on several
  > platforms to ensure that there isn't (as Duncan menioned)
  > that a problem
  > with compilers/platforms restricting the number of arguments.
  >
  > -Greg
  > -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
  > -.-.-.-.-.-.-.-.-.-
  > r-devel mailing list -- Read
  > http://www.ci.tuwien.ac.at/~hornik/R/R-  > FAQ.html
  > Send
  > "info", "help", or "[un]subscribe"
  > (in the
  > "body", not the subject !)  To:
r-devel-request@stat.math.ethz.ch
  > _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.
  > _._._._._._._._._._
  >


LEGAL NOTICE
Unless expressly stated otherwise, this message is confidential and may be
privileged. It is intended for the addressee(s) only. Access to this E-mail by
anyone else is unauthorized. If you are not an addressee, any disclosure or
copying of the contents of this E-mail or any action taken (or not taken) in
reliance on it is unauthorized and may be unlawful. If you are not an addressee,
please inform the sender immediately.