nope, that doesnt work, although it does get rid of my compile errors.
It appears that I've created a local stack pointer, not accessed the one
in the xsub function.
Back to reading percall....
----- Original Message -----
From: "Erick Nelson" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, August 02, 2001 10:37 PM
Subject: Re: ACE.xs:37: `sp' undeclared (first use in this function)
> just read perldoc perlcall. Looks like my function will now look like ....
>
> int pushcompout (char * nm, char * val) {
> dSP ;
> int retval = 0;
> ENTER ;
> SAVETMPS;
> PUSHMARK(SP) ;
> if (strlen(nm) > 0 && strlen(val) > 0) {
> XPUSHs(sv_2mortal(newSVpv(nm, 0)));
> XPUSHs(sv_2mortal(newSVpv(val, 0)));
> retval += 2;
> }
> PUTBACK ;
> FREETMPS ;
> LEAVE ;
> return retval;
> }
>
> thanks.
>
> ----- Original Message -----
> From: "Fletch" <[EMAIL PROTECTED]>
> To: "Erick Nelson" <[EMAIL PROTECTED]>
> Cc: <[EMAIL PROTECTED]>
> Sent: Thursday, August 02, 2001 9:56 PM
> Subject: Re: ACE.xs:37: `sp' undeclared (first use in this function)
>
>
> > >>>>> "Erick" == Erick Nelson <[EMAIL PROTECTED]> writes:
> >
> > [...]
> >
> > Erick> Line 37 is the first XPUSHs line. Why won't this compile?
> > Erick> What is 'sp'? If I cannot put this function where I placed
> > Erick> to where can I put it or how can I accomplish putting this
> > Erick> code into a function so I dont have to repeat these
> > Erick> statements over 30 times?
> >
> > sp is perl's stack pointer variable. Inside an XSUB, the XS
> > preprocessor will stick the correct magic to declare it for you.
> > Outside of an XS, you'll need to to include the declaration yourself.
> > Check out `perldoc perlcall' for examples of how to manipulate perl's
> > stack from plain C (as opposed to from an XSUB).
> >
> >
> > --
> > Fletch | "If you find my answers frightening, __`'/|
> > [EMAIL PROTECTED] | Vincent, you should cease askin' \ o.O'
> > 770 933-0600 x211(w) | scary questions." -- Jules =(___)=
> > | U
>