summaryrefslogtreecommitdiff
path: root/av.h
diff options
context:
space:
mode:
authorMarcus Holland-Moritz <mhx-perl@gmx.net>2007-12-29 19:17:42 +0100
committerMarcus Holland-Moritz <mhx-perl@gmx.net>2007-12-30 10:30:15 +0000
commit20f4945e16943f141ab760ffdcdbf39a5f3b734e (patch)
treec11ee3b84517648779c89e56235d14bfb9a838ac /av.h
parent02f90d034df1b2bf848e5c8f7ede725dc7c7faa9 (diff)
downloadperl-20f4945e16943f141ab760ffdcdbf39a5f3b734e.tar.gz
factor out duplicate code in struct xpv*
Message-ID: <20071229181742.1933db40@r2d2> p4raw-id: //depot/perl@32783
Diffstat (limited to 'av.h')
-rw-r--r--av.h56
1 files changed, 15 insertions, 41 deletions
diff --git a/av.h b/av.h
index b3f56ff179..3c40dc8fe8 100644
--- a/av.h
+++ b/av.h
@@ -8,53 +8,27 @@
*
*/
+#define _XPVAV_ALLOCATED_HEAD \
+ SSize_t xav_fill; /* Index of last element present */ \
+ SSize_t xav_max /* max index for which array has space */
+
+#define _XPVAV_HEAD \
+ union _xnvu xnv_u; \
+ _XPVAV_ALLOCATED_HEAD
+
struct xpvav {
- union {
- NV xnv_nv; /* numeric value, if any */
- HV * xgv_stash;
- struct {
- U32 xlow;
- U32 xhigh;
- } xpad_cop_seq; /* used by pad.c for cop_sequence */
- struct {
- U32 xbm_previous; /* how many characters in string before rare? */
- U8 xbm_flags;
- U8 xbm_rare; /* rarest character in string */
- } xbm_s; /* fields from PVBM */
- } xnv_u;
- SSize_t xav_fill; /* Index of last element present */
- SSize_t xav_max; /* max index for which array has space */
- union {
- IV xivu_iv; /* integer value or pv offset */
- UV xivu_uv;
- void * xivu_p1;
- I32 xivu_i32;
- HEK * xivu_namehek;
- } xiv_u;
- union {
- MAGIC* xmg_magic; /* linked list of magicalness */
- HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */
- } xmg_u;
- HV* xmg_stash; /* class package */
+ _XPVAV_HEAD;
+ _XPVMG_HEAD;
};
typedef struct {
- SSize_t xav_fill; /* Index of last element present */
- SSize_t xav_max; /* max index for which array has space */
- union {
- IV xivu_iv; /* integer value or pv offset */
- UV xivu_uv;
- void * xivu_p1;
- I32 xivu_i32;
- HEK * xivu_namehek;
- } xiv_u;
- union {
- MAGIC* xmg_magic; /* linked list of magicalness */
- HV* xmg_ourstash; /* Stash for our (when SvPAD_OUR is true) */
- } xmg_u;
- HV* xmg_stash; /* class package */
+ _XPVAV_ALLOCATED_HEAD;
+ _XPVMG_HEAD;
} xpvav_allocated;
+#undef _XPVAV_ALLOCATED_HEAD
+#undef _XPVAV_HEAD
+
/* SV** xav_alloc; */
#define xav_alloc xiv_u.xivu_p1
/* SV* xav_arylen; */