#define _SV_HEAD_UNION \
union { \
+ char* svu_pv; /* pointer to malloced string */ \
IV svu_iv; \
UV svu_uv; \
SV* svu_rv; /* pointer to another SV */ \
- char* svu_pv; /* pointer to malloced string */ \
SV** svu_array; \
HE** svu_hash; \
GP* svu_gp; \
/* RV upwards. However, SVf_ROK and SVp_IOK are exclusive */
#define SVprv_WEAKREF 0x80000000 /* Weak reference */
-#define _XPV_ALLOCATED_HEAD \
- STRLEN xpv_cur; /* length of svu_pv as a C string */ \
- STRLEN xpv_len /* allocated size */
-
#define _XPV_HEAD \
union _xnvu xnv_u; \
- _XPV_ALLOCATED_HEAD
+ STRLEN xpv_cur; /* length of svu_pv as a C string */ \
+ STRLEN xpv_len /* allocated size */
union _xnvu {
NV xnv_nv; /* numeric value, if any */
union _xmgu xmg_u; \
HV* xmg_stash /* class package */
-/* These structure must match the beginning of struct xpvhv in hv.h. */
+/* This structure must match the beginning of struct xpvhv in hv.h. */
struct xpvmg {
_XPV_HEAD;
_XPVMG_HEAD;
DIR * xiou_dirp; /* for opendir, readdir, etc */ \
void * xiou_any; /* for alignment */ \
} xio_dirpu; \
- IV xio_lines; /* $. */ \
+ /* IV xio_lines is now in IVX $. */ \
IV xio_page; /* $% */ \
IV xio_page_len; /* $= */ \
IV xio_lines_left; /* $- */ \
assert(SvTYPE(_svivx) != SVt_PVHV); \
assert(SvTYPE(_svivx) != SVt_PVCV); \
assert(SvTYPE(_svivx) != SVt_PVFM); \
+ assert(SvTYPE(_svivx) != SVt_PVIO); \
assert(!isGV_with_GP(_svivx)); \
&(((XPVIV*) MUTABLE_PTR(SvANY(_svivx)))->xiv_iv); \
}))
assert(SvTYPE(_svuvx) != SVt_PVHV); \
assert(SvTYPE(_svuvx) != SVt_PVCV); \
assert(SvTYPE(_svuvx) != SVt_PVFM); \
+ assert(SvTYPE(_svuvx) != SVt_PVIO); \
assert(!isGV_with_GP(_svuvx)); \
&(((XPVUV*) MUTABLE_PTR(SvANY(_svuvx)))->xuv_uv); \
}))
#define IoOFP(sv) ((XPVIO*) SvANY(sv))->xio_ofp
#define IoDIRP(sv) ((XPVIO*) SvANY(sv))->xio_dirp
#define IoANY(sv) ((XPVIO*) SvANY(sv))->xio_any
-#define IoLINES(sv) ((XPVIO*) SvANY(sv))->xio_lines
+#define IoLINES(sv) ((XPVIO*) SvANY(sv))->xiv_u.xivu_iv
#define IoPAGE(sv) ((XPVIO*) SvANY(sv))->xio_page
#define IoPAGE_LEN(sv) ((XPVIO*) SvANY(sv))->xio_page_len
#define IoLINES_LEFT(sv)((XPVIO*) SvANY(sv))->xio_lines_left