HV* xmg_stash; /* class package */
};
+#if 0
typedef struct xpvav xpvav_allocated;
+#else
+typedef struct {
+ SSize_t xav_fill; /* Index of last element present */
+ SSize_t xav_max; /* max index for which array has space */
+ union {
+ NV xnvu_nv;
+ struct {
+ void *xnv_p1; /* pointer to beginning of C array of SVs */
+ union {
+ void *xnv_p2;
+ IV xnv_i2;
+ } xnv_u2;
+ } xnv_s;
+ } xnv_u;
+ MAGIC* xmg_magic; /* magic for scalar array */
+ HV* xmg_stash; /* class package */
+} xpvav_allocated;
+#endif
/* SV** xav_alloc; */
#define xav_alloc xnv_u.xnv_s.xnv_p1
#define xhv_aux xnv_u.xnv_s.xnv_p1
#define xhv_keys xnv_u.xnv_s.xnv_u2.xnv_i2
+#if 0
typedef struct xpvhv xpvhv_allocated;
+#else
+typedef struct {
+ STRLEN xhv_fill; /* how full xhv_array currently is */
+ STRLEN xhv_max; /* subscript of last element of xhv_array */
+ union {
+ NV xnvu_nv; /* numeric value, if any */
+ struct {
+ void *xnv_p1;
+ union {
+ void *xnv_p2;
+ IV xnv_i2; /* how many elements in the array */
+ } xnv_u2;
+ } xnv_s;
+ } xnv_u;
+ MAGIC* xmg_magic; /* magic for scalar array */
+ HV* xmg_stash; /* class package */
+} xpvhv_allocated;
+#endif
/* hash a key */
/* FYI: This is the "One-at-a-Time" algorithm by Bob Jenkins
STRLEN xpv_len; /* allocated size */
};
+#if 0
typedef struct xpv xpv_allocated;
+#else
+typedef struct {
+ STRLEN xpv_cur; /* length of sv_pv as a C string */
+ STRLEN xpv_len; /* allocated size */
+} xpv_allocated;
+#endif
struct xpviv {
IV xiv_iv; /* integer value or pv offset */