X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pp.h;h=8986db95df7fe22aed77833eb642dafb96ddeb73;hb=5702da47233114a6ad065f7f23d72aab80bc1f11;hp=5dbc09c4eb85ee1eb93beef595c472ea9b862cde;hpb=39644a267dae6dfa935b1c1d39151eb399850949;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pp.h b/pp.h index 5dbc09c..8986db9 100644 --- a/pp.h +++ b/pp.h @@ -1,23 +1,18 @@ /* pp.h * - * Copyright (c) 1991-2001, Larry Wall + * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, + * 2000, 2001, by Larry Wall and others * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * */ -#ifdef USE_THREADS -#define ARGS thr -#define dARGS struct perl_thread *thr; -#else -#define ARGS -#define dARGS -#endif /* USE_THREADS */ - #define PP(s) OP * Perl_##s(pTHX) /* +=head1 Stack Manipulation Macros + =for apidoc AmU||SP Stack pointer. This is usually handled by C. See C and C. @@ -100,7 +95,16 @@ See C and L for other uses. Pops an SV off the stack. =for apidoc Amn|char*|POPp +Pops a string off the stack. Deprecated. New code should provide +a STRLEN n_a and use POPpx. + +=for apidoc Amn|char*|POPpx Pops a string off the stack. +Requires a variable STRLEN n_a in scope. + +=for apidoc Amn|char*|POPpbytex +Pops a string off the stack which must consist of bytes i.e. characters < 256. +Requires a variable STRLEN n_a in scope. =for apidoc Amn|NV|POPn Pops a double off the stack. @@ -122,6 +126,7 @@ Pops a long off the stack. #define POPs (*sp--) #define POPp (SvPVx(POPs, PL_na)) /* deprecated */ #define POPpx (SvPVx(POPs, n_a)) +#define POPpbytex (SvPVbytex(POPs, n_a)) #define POPn (SvNVx(POPs)) #define POPi ((IV)SvIVx(POPs)) #define POPu ((UV)SvUVx(POPs)) @@ -200,12 +205,12 @@ See C. =cut */ -#define EXTEND(p,n) STMT_START { if (PL_stack_max - p < (n)) { \ +#define EXTEND(p,n) STMT_START { if (PL_stack_max - p < (int)(n)) { \ sp = stack_grow(sp,p, (int) (n)); \ } } STMT_END /* Same thing, but update mark register too. */ -#define MEXTEND(p,n) STMT_START {if (PL_stack_max - p < (n)) { \ +#define MEXTEND(p,n) STMT_START {if (PL_stack_max - p < (int)(n)) { \ int markoff = mark - PL_stack_base; \ sp = stack_grow(sp,p,(int) (n)); \ mark = PL_stack_base + markoff; \ @@ -334,6 +339,7 @@ See C. if (PL_amagic_generation) { \ SV* tmpsv; \ SV* arg= sp[shift]; \ + if(0) goto am_again; /* shut up unused warning */ \ am_again: \ if ((SvAMAGIC(arg))&&\ (tmpsv=AMG_CALLun(arg,meth))) {\