source: trunk/third/perl/av.h @ 10724

Revision 10724, 1.6 KB checked in by ghudson, 27 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r10723, which included commits to RCS files with non-trunk default branches.
Line 
1/*    av.h
2 *
3 *    Copyright (c) 1991-1997, Larry Wall
4 *
5 *    You may distribute under the terms of either the GNU General Public
6 *    License or the Artistic License, as specified in the README file.
7 *
8 */
9
10struct xpvav {
11    char*       xav_array;      /* pointer to first array element */
12    SSize_t     xav_fill;
13    SSize_t     xav_max;
14    IV          xof_off;        /* ptr is incremented by offset */
15    double      xnv_nv;         /* numeric value, if any */
16    MAGIC*      xmg_magic;      /* magic for scalar array */
17    HV*         xmg_stash;      /* class package */
18
19    SV**        xav_alloc;      /* pointer to malloced string */
20    SV*         xav_arylen;
21    U8          xav_flags;
22};
23
24#define AVf_REAL 1      /* free old entries */
25#define AVf_REIFY 2     /* can become real */
26#define AVf_REUSED 4    /* got undeffed--don't turn old memory into SVs now */
27
28#define Nullav Null(AV*)
29
30#define AvARRAY(av)     ((SV**)((XPVAV*)  SvANY(av))->xav_array)
31#define AvALLOC(av)     ((XPVAV*)  SvANY(av))->xav_alloc
32#define AvMAX(av)       ((XPVAV*)  SvANY(av))->xav_max
33#define AvFILL(av)      ((XPVAV*)  SvANY(av))->xav_fill
34#define AvARYLEN(av)    ((XPVAV*)  SvANY(av))->xav_arylen
35#define AvFLAGS(av)     ((XPVAV*)  SvANY(av))->xav_flags
36
37#define AvREAL(av)      (AvFLAGS(av) & AVf_REAL)
38#define AvREAL_on(av)   (AvFLAGS(av) |= AVf_REAL)
39#define AvREAL_off(av)  (AvFLAGS(av) &= ~AVf_REAL)
40#define AvREIFY(av)     (AvFLAGS(av) & AVf_REIFY)
41#define AvREIFY_on(av)  (AvFLAGS(av) |= AVf_REIFY)
42#define AvREIFY_off(av) (AvFLAGS(av) &= ~AVf_REIFY)
43#define AvREUSED(av)    (AvFLAGS(av) & AVf_REUSED)
44#define AvREUSED_on(av) (AvFLAGS(av) |= AVf_REUSED)
45#define AvREUSED_off(av) (AvFLAGS(av) &= ~AVf_REUSED)
46
47#define AvREALISH(av)   (AvFLAGS(av) & (AVf_REAL|AVf_REIFY))
48
Note: See TracBrowser for help on using the repository browser.