X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=cv.h;h=825a968e42b0abcacb6c17ecf39678952e5de199;hb=04ab2c8763f1a01bee803d3ef65890b775f28c21;hp=6e471413ff92c4fd660d058005c79730c73d5792;hpb=b84cd2cbc1e1e5656828228b9350e1406e9c3890;p=p5sagit%2Fp5-mst-13.2.git diff --git a/cv.h b/cv.h index 6e47141..825a968 100644 --- a/cv.h +++ b/cv.h @@ -1,13 +1,14 @@ /* cv.h * - * Copyright (c) 1991-2002, Larry Wall + * Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, + * 2000, 2001, 2002, 2003, 2004, 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. * */ -/* This structure much match XPVCV in B/C.pm and the beginning of XPVFM +/* This structure must match XPVCV in B/C.pm and the beginning of XPVFM * in sv.h */ struct xpvcv { @@ -74,7 +75,10 @@ Returns the stash of the CV. #define CVf_CLONED 0x0002 /* a clone of one of those */ #define CVf_ANON 0x0004 /* CvGV() can't be trusted */ #define CVf_OLDSTYLE 0x0008 -#define CVf_UNIQUE 0x0010 /* can't be cloned */ +#define CVf_UNIQUE 0x0010 /* sub is only called once (eg PL_main_cv, + * require, eval). Not to be confused + * with the GVf_UNIQUE flag associated + * with the :unique attribute */ #define CVf_NODEBUG 0x0020 /* no DB::sub indirection for this CV (esp. useful for special XSUBs) */ #define CVf_METHOD 0x0040 /* CV is explicitly marked as a method */ @@ -82,9 +86,10 @@ Returns the stash of the CV. #define CVf_LVALUE 0x0100 /* CV return value can be used as lvalue */ #define CVf_CONST 0x0200 /* inlinable sub */ #define CVf_WEAKOUTSIDE 0x0400 /* CvOUTSIDE isn't ref counted */ +#define CVf_ASSERTION 0x0800 /* CV called only when asserting */ /* This symbol for optimised communication between toke.c and op.c: */ -#define CVf_BUILTIN_ATTRS (CVf_METHOD|CVf_LOCKED|CVf_LVALUE) +#define CVf_BUILTIN_ATTRS (CVf_METHOD|CVf_LOCKED|CVf_LVALUE|CVf_ASSERTION) #define CvCLONE(cv) (CvFLAGS(cv) & CVf_CLONE) #define CvCLONE_on(cv) (CvFLAGS(cv) |= CVf_CLONE) @@ -124,6 +129,10 @@ Returns the stash of the CV. #define CvLVALUE_on(cv) (CvFLAGS(cv) |= CVf_LVALUE) #define CvLVALUE_off(cv) (CvFLAGS(cv) &= ~CVf_LVALUE) +#define CvASSERTION(cv) (CvFLAGS(cv) & CVf_ASSERTION) +#define CvASSERTION_on(cv) (CvFLAGS(cv) |= CVf_ASSERTION) +#define CvASSERTION_off(cv) (CvFLAGS(cv) &= ~CVf_ASSERTION) + #define CvEVAL(cv) (CvUNIQUE(cv) && !SvFAKE(cv)) #define CvEVAL_on(cv) (CvUNIQUE_on(cv),SvFAKE_off(cv)) #define CvEVAL_off(cv) CvUNIQUE_off(cv)