From gregory_r_warnes@groton.pfizer.com  Mon Jul 16 15:50:25 2001
From: gregory_r_warnes@groton.pfizer.com (Warnes, Gregory R)
Date: Mon, 16 Jul 2001 10:50:25 -0400
Subject: [Rd] too many arguments in foreign function call
Message-ID: <5429125E11E4D411AF7300805FE603A8014CEC74@groexmbcr02.pfizer.com>


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.
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


[Rd] too many arguments in foreign function call
Warnes, Gregory R