X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=av.h;h=a8dc60b4cde8046dbd07e5015db669c31b93038d;hb=a9581ec21a2686ca09657757555fcd66435bb205;hp=082a8abd3659c44192ad7ebe886edc57a3c1167b;hpb=a0d0e21ea6ea90a22318550944fe6cb09ae10cda;p=p5sagit%2Fp5-mst-13.2.git diff --git a/av.h b/av.h index 082a8ab..a8dc60b 100644 --- a/av.h +++ b/av.h @@ -1,6 +1,6 @@ /* av.h * - * Copyright (c) 1991-1994, Larry Wall + * Copyright (c) 1991-1997, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -8,7 +8,7 @@ */ struct xpvav { - char* xav_array; /* pointer to malloced string */ + char* xav_array; /* pointer to first array element */ SSize_t xav_fill; SSize_t xav_max; IV xof_off; /* ptr is incremented by offset */ @@ -16,13 +16,14 @@ struct xpvav { MAGIC* xmg_magic; /* magic for scalar array */ HV* xmg_stash; /* class package */ - SV** xav_alloc; + SV** xav_alloc; /* pointer to malloced string */ SV* xav_arylen; U8 xav_flags; }; #define AVf_REAL 1 /* free old entries */ #define AVf_REIFY 2 /* can become real */ +#define AVf_REUSED 4 /* got undeffed--don't turn old memory into SVs now */ #define Nullav Null(AV*) @@ -39,6 +40,9 @@ struct xpvav { #define AvREIFY(av) (AvFLAGS(av) & AVf_REIFY) #define AvREIFY_on(av) (AvFLAGS(av) |= AVf_REIFY) #define AvREIFY_off(av) (AvFLAGS(av) &= ~AVf_REIFY) +#define AvREUSED(av) (AvFLAGS(av) & AVf_REUSED) +#define AvREUSED_on(av) (AvFLAGS(av) |= AVf_REUSED) +#define AvREUSED_off(av) (AvFLAGS(av) &= ~AVf_REUSED) -#define AvREALISH(av) AvFLAGS(av) /* REAL or REIFY -- shortcut */ +#define AvREALISH(av) (AvFLAGS(av) & (AVf_REAL|AVf_REIFY))