/* av.h * * Copyright (C) 1991, 1992, 1993, 1995, 1996, 1997, 1998, 1999, 2000, * 2001, 2002, 2005, 2006, 2007, 2008, 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. * */ struct xpvav { HV* xmg_stash; /* class package */ union _xmgu xmg_u; SSize_t xav_fill; /* Index of last element present */ SSize_t xav_max; /* max index for which array has space */ SV** xav_alloc; /* pointer to beginning of C array of SVs */ }; /* SV* xav_arylen; */ /* SVpav_REAL is set for all AVs whose xav_array contents are refcounted. * Some things like "@_" and the scratchpad list do not set this, to * indicate that they are cheating (for efficiency) by not refcounting * the AV's contents. * * SVpav_REIFY is only meaningful on such "fake" AVs (i.e. where SVpav_REAL * is not set). It indicates that the fake AV is capable of becoming * real if the array needs to be modified in some way. Functions that * modify fake AVs check both flags to call av_reify() as appropriate. * * Note that the Perl stack has neither flag set. (Thus, * items that go on the stack are never refcounted.) * * These internal details are subject to change any time. AV * manipulations external to perl should not care about any of this. * GSAR 1999-09-10 */ /* =head1 Handy Values =for apidoc AmU||Nullav Null AV pointer. (deprecated - use C<(AV *)NULL> instead) =head1 Array Manipulation Functions =for apidoc Am|int|AvFILL|AV* av Same as C<av_len()>. Deprecated, use C<av_len()> instead. =cut */ #ifndef PERL_CORE # define Nullav Null(AV*) #endif #define AvARRAY(av) ((av)->sv_u.svu_array) #define AvALLOC(av) ((XPVAV*) SvANY(av))->xav_alloc #define AvMAX(av) ((XPVAV*) SvANY(av))->xav_max #define AvFILLp(av) ((XPVAV*) SvANY(av))->xav_fill #define AvARYLEN(av) (*Perl_av_arylen_p(aTHX_ MUTABLE_AV(av))) #define AvREAL(av) (SvFLAGS(av) & SVpav_REAL) #define AvREAL_on(av) (SvFLAGS(av) |= SVpav_REAL) #define AvREAL_off(av) (SvFLAGS(av) &= ~SVpav_REAL) #define AvREAL_only(av) (AvREIFY_off(av), SvFLAGS(av) |= SVpav_REAL) #define AvREIFY(av) (SvFLAGS(av) & SVpav_REIFY) #define AvREIFY_on(av) (SvFLAGS(av) |= SVpav_REIFY) #define AvREIFY_off(av) (SvFLAGS(av) &= ~SVpav_REIFY) #define AvREIFY_only(av) (AvREAL_off(av), SvFLAGS(av) |= SVpav_REIFY) #define AvREALISH(av) (SvFLAGS(av) & (SVpav_REAL|SVpav_REIFY)) #define AvFILL(av) ((SvRMAGICAL((const SV *) (av))) \ ? mg_size(MUTABLE_SV(av)) : AvFILLp(av)) #define NEGATIVE_INDICES_VAR "NEGATIVE_INDICES" /* =for apidoc newAV Creates a new AV. The reference count is set to 1. Perl equivalent: C<my @array;>. =cut */ #define newAV() MUTABLE_AV(newSV_type(SVt_PVAV)) /* * Local variables: * c-indentation-style: bsd * c-basic-offset: 4 * indent-tabs-mode: t * End: * * ex: set ts=8 sts=4 sw=4 noet: */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
EXTERN.h | File | 1.77 KB | 0644 |
|
INTERN.h | File | 1.47 KB | 0644 |
|
XSUB.h | File | 21.27 KB | 0644 |
|
av.h | File | 2.91 KB | 0644 |
|
bitcount.h | File | 850 B | 0644 |
|
charclass_invlists.h | File | 9.55 KB | 0644 |
|
config.h | File | 145.13 KB | 0644 |
|
cop.h | File | 39.64 KB | 0644 |
|
cv.h | File | 9.22 KB | 0644 |
|
dosish.h | File | 5.95 KB | 0644 |
|
embed.h | File | 84.98 KB | 0644 |
|
embedvar.h | File | 19.08 KB | 0644 |
|
fakesdio.h | File | 3.24 KB | 0644 |
|
fakethr.h | File | 1.92 KB | 0644 |
|
feature.h | File | 3.69 KB | 0644 |
|
form.h | File | 1.43 KB | 0644 |
|
git_version.h | File | 357 B | 0644 |
|
gv.h | File | 10.02 KB | 0644 |
|
handy.h | File | 53.01 KB | 0644 |
|
hv.h | File | 23.67 KB | 0644 |
|
intrpvar.h | File | 27.19 KB | 0644 |
|
iperlsys.h | File | 47.63 KB | 0644 |
|
keywords.h | File | 6.45 KB | 0644 |
|
l1_char_class_tab.h | File | 31.86 KB | 0644 |
|
libperl.so | File | 1.57 MB | 0755 |
|
malloc_ctl.h | File | 1.48 KB | 0644 |
|
metaconfig.h | File | 899 B | 0644 |
|
mg.h | File | 2.37 KB | 0644 |
|
mg_data.h | File | 4.84 KB | 0644 |
|
mg_raw.h | File | 4.21 KB | 0644 |
|
mg_vtable.h | File | 9.14 KB | 0644 |
|
mydtrace.h | File | 1.81 KB | 0644 |
|
nostdio.h | File | 3.37 KB | 0644 |
|
op.h | File | 32.07 KB | 0644 |
|
op_reg_common.h | File | 4.33 KB | 0644 |
|
opcode.h | File | 46.2 KB | 0644 |
|
opnames.h | File | 8.05 KB | 0644 |
|
overload.h | File | 2.98 KB | 0644 |
|
pad.h | File | 12.77 KB | 0644 |
|
parser.h | File | 5.38 KB | 0644 |
|
patchlevel.h | File | 8.05 KB | 0644 |
|
perl.h | File | 168.47 KB | 0644 |
|
perlapi.h | File | 5.34 KB | 0644 |
|
perldtrace.h | File | 1.77 KB | 0644 |
|
perlio.h | File | 10.83 KB | 0644 |
|
perliol.h | File | 13.21 KB | 0644 |
|
perlsdio.h | File | 4.92 KB | 0644 |
|
perlsfio.h | File | 2.64 KB | 0644 |
|
perlvars.h | File | 8.49 KB | 0644 |
|
perly.h | File | 5.67 KB | 0644 |
|
pp.h | File | 18.37 KB | 0644 |
|
pp_proto.h | File | 10.61 KB | 0644 |
|
proto.h | File | 259.12 KB | 0644 |
|
reentr.h | File | 79.05 KB | 0644 |
|
regcharclass.h | File | 30.79 KB | 0644 |
|
regcomp.h | File | 32.46 KB | 0644 |
|
regexp.h | File | 28.7 KB | 0644 |
|
regnodes.h | File | 37.97 KB | 0644 |
|
scope.h | File | 9.64 KB | 0644 |
|
sv.h | File | 72.44 KB | 0644 |
|
thread.h | File | 11.67 KB | 0644 |
|
time64.h | File | 1.4 KB | 0644 |
|
time64_config.h | File | 1.98 KB | 0644 |
|
uconfig.h | File | 144.66 KB | 0644 |
|
unixish.h | File | 4.48 KB | 0644 |
|
utf8.h | File | 24.78 KB | 0644 |
|
utfebcdic.h | File | 34.07 KB | 0644 |
|
util.h | File | 1.71 KB | 0644 |
|
uudmap.h | File | 904 B | 0644 |
|
warnings.h | File | 4.23 KB | 0644 |
|