diff options
author | Marcus Holland-Moritz <mhx-perl@gmx.net> | 2007-12-29 19:17:42 +0100 |
---|---|---|
committer | Marcus Holland-Moritz <mhx-perl@gmx.net> | 2007-12-30 10:30:15 +0000 |
commit | 20f4945e16943f141ab760ffdcdbf39a5f3b734e (patch) | |
tree | c11ee3b84517648779c89e56235d14bfb9a838ac /av.h | |
parent | 02f90d034df1b2bf848e5c8f7ede725dc7c7faa9 (diff) | |
download | perl-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.h | 56 |
1 files changed, 15 insertions, 41 deletions
@@ -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; */ |