home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / perl-5.003-base.tgz / perl-5.003-base.tar / fsf / perl / av.h < prev    next >
C/C++ Source or Header  |  1995-09-06  |  2KB  |  49 lines

  1. /*    av.h
  2.  *
  3.  *    Copyright (c) 1991-1994, 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.  
  10. struct xpvav {
  11.     char*    xav_array;    /* pointer to malloced string */
  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;
  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)    /* REAL or REIFY -- shortcut */
  48.  
  49.