[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/i586-linux-thread-multi/CORE/ -> av.h (source)

   1  /*    av.h
   2   *
   3   *    Copyright (C) 1991, 1992, 1993, 1995, 1996, 1997, 1998, 1999,
   4   *    2000, 2001, 2002, 2005, 2006, 2007, by Larry Wall and others
   5   *
   6   *    You may distribute under the terms of either the GNU General Public
   7   *    License or the Artistic License, as specified in the README file.
   8   *
   9   */
  10  
  11  struct xpvav {
  12      union {
  13      NV    xnv_nv;        /* numeric value, if any */
  14      HV *    xgv_stash;
  15      struct {
  16          U32    xlow;
  17          U32    xhigh;
  18      }    xpad_cop_seq;    /* used by pad.c for cop_sequence */
  19      struct {
  20          U32 xbm_previous;    /* how many characters in string before rare? */
  21          U8    xbm_flags;
  22          U8    xbm_rare;    /* rarest character in string */
  23      }    xbm_s;        /* fields from PVBM */
  24      }        xnv_u;
  25      SSize_t    xav_fill;       /* Index of last element present */
  26      SSize_t    xav_max;        /* max index for which array has space */
  27      union {
  28      IV    xivu_iv;    /* integer value or pv offset */
  29      UV    xivu_uv;
  30      void *    xivu_p1;
  31      I32    xivu_i32;
  32      HEK *    xivu_namehek;
  33      }        xiv_u;
  34      union {
  35      MAGIC*    xmg_magic;    /* linked list of magicalness */
  36      HV*    xmg_ourstash;    /* Stash for our (when SvPAD_OUR is true) */
  37      } xmg_u;
  38      HV*        xmg_stash;    /* class package */
  39  };
  40  
  41  typedef struct {
  42      SSize_t    xav_fill;       /* Index of last element present */
  43      SSize_t    xav_max;        /* max index for which array has space */
  44      union {
  45      IV    xivu_iv;    /* integer value or pv offset */
  46      UV    xivu_uv;
  47      void *    xivu_p1;
  48      I32    xivu_i32;
  49      HEK *    xivu_namehek;
  50      }        xiv_u;
  51      union {
  52      MAGIC*    xmg_magic;    /* linked list of magicalness */
  53      HV*    xmg_ourstash;    /* Stash for our (when SvPAD_OUR is true) */
  54      } xmg_u;
  55      HV*        xmg_stash;    /* class package */
  56  } xpvav_allocated;
  57  
  58  /* SV**    xav_alloc; */
  59  #define xav_alloc xiv_u.xivu_p1
  60  /* SV*    xav_arylen; */
  61  
  62  /* SVpav_REAL is set for all AVs whose xav_array contents are refcounted.
  63   * Some things like "@_" and the scratchpad list do not set this, to
  64   * indicate that they are cheating (for efficiency) by not refcounting
  65   * the AV's contents.
  66   * 
  67   * SVpav_REIFY is only meaningful on such "fake" AVs (i.e. where SVpav_REAL
  68   * is not set).  It indicates that the fake AV is capable of becoming
  69   * real if the array needs to be modified in some way.  Functions that
  70   * modify fake AVs check both flags to call av_reify() as appropriate.
  71   *
  72   * Note that the Perl stack and @DB::args have neither flag set. (Thus,
  73   * items that go on the stack are never refcounted.)
  74   *
  75   * These internal details are subject to change any time.  AV
  76   * manipulations external to perl should not care about any of this.
  77   * GSAR 1999-09-10
  78   */
  79  
  80  /*
  81  =head1 Handy Values
  82  
  83  =for apidoc AmU||Nullav
  84  Null AV pointer.
  85  
  86  =head1 Array Manipulation Functions
  87  
  88  =for apidoc Am|int|AvFILL|AV* av
  89  Same as C<av_len()>.  Deprecated, use C<av_len()> instead.
  90  
  91  =cut
  92  */
  93  
  94  #define Nullav Null(AV*)
  95  
  96  #define AvARRAY(av)    ((av)->sv_u.svu_array)
  97  #define AvALLOC(av)    (*((SV***)&((XPVAV*)  SvANY(av))->xav_alloc))
  98  #define AvMAX(av)    ((XPVAV*)  SvANY(av))->xav_max
  99  #define AvFILLp(av)    ((XPVAV*)  SvANY(av))->xav_fill
 100  #define AvARYLEN(av)    (*Perl_av_arylen_p(aTHX_ (AV*)av))
 101  
 102  #define AvREAL(av)    (SvFLAGS(av) & SVpav_REAL)
 103  #define AvREAL_on(av)    (SvFLAGS(av) |= SVpav_REAL)
 104  #define AvREAL_off(av)    (SvFLAGS(av) &= ~SVpav_REAL)
 105  #define AvREAL_only(av)    (AvREIFY_off(av), SvFLAGS(av) |= SVpav_REAL)
 106  #define AvREIFY(av)    (SvFLAGS(av) & SVpav_REIFY)
 107  #define AvREIFY_on(av)    (SvFLAGS(av) |= SVpav_REIFY)
 108  #define AvREIFY_off(av)    (SvFLAGS(av) &= ~SVpav_REIFY)
 109  #define AvREIFY_only(av)    (AvREAL_off(av), SvFLAGS(av) |= SVpav_REIFY)
 110  
 111  #define AvREALISH(av)    (SvFLAGS(av) & (SVpav_REAL|SVpav_REIFY))
 112                                            
 113  #define AvFILL(av)    ((SvRMAGICAL((SV *) (av))) \
 114                ? mg_size((SV *) av) : AvFILLp(av))
 115  
 116  #define NEGATIVE_INDICES_VAR "NEGATIVE_INDICES"
 117  
 118  /*
 119   * Local variables:
 120   * c-indentation-style: bsd
 121   * c-basic-offset: 4
 122   * indent-tabs-mode: t
 123   * End:
 124   *
 125   * ex: set ts=8 sts=4 sw=4 noet:
 126   */


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1