On Fri, 2004-09-24 at 12:01, muppet wrote:
> On Sep 24, 2004, at 10:18 AM, Scott T. Hildreth wrote:
> 
> > On Thu, 2004-09-23 at 16:04, Nick Ing-Simmons wrote:
> >>  - the XS code from h2xs
> >
> > CLI *
> > cli_parse(argc, argv)
> >     int argc
> >     char ** argv
> >
> >    ...I changed that to 'char * &argv'
> 
> this will be interpreted as something that wants to pass the address of 
> one string by reference.
> 
> while it will be passed as a char**, it will not be the char*[] (array 
> of char *) that is actually desired.  you can see that in the code that 
> gets generated (you already posted it, i won't repeat it).
> 
> 
> > With 'char ** argv',
> 
> xsubpp expects that you have supplied code to handle the charPtrPtr 
> type in the way that you want.  but you didn't.
> 
> 
> perl arrays know their length, and subroutines know how many items are 
> on the stack.  passing an array and its length is very non-perlish.  
> i'd bind that function to take the argv array on the stack, in the same 
> manner as Nick mentioned earlier (the SomeFunc() example), so you could 
> use it like this:
> 
>    $cli = Package::Cli::parse (@ARGV);

     (light just went on) Got it.  Didn't get that far yet, well haven't
     got back to it.  I was just trying to get the basic interface to 
     the functions to compile and load with the basic test.  
> 
> you could even fetch @ARGV as a global if you wanted to go for real 
> simplicity.
> 
   Do you mean from the XS code or have it passed by '&sub'?
> 
> --
> "Ghostbusters" is the best movie of this decade.
>    -- Neal, circa 1996, referring to a movie released in 1984.

Reply via email to