diff options
Diffstat (limited to 'hv.h')
-rw-r--r-- | hv.h | 19 |
1 files changed, 15 insertions, 4 deletions
@@ -44,15 +44,26 @@ struct xpvhv_aux { struct xpvhv { STRLEN xhv_fill; /* how full xhv_array currently is */ STRLEN xhv_max; /* subscript of last element of xhv_array */ - IV xhv_keys; /* how many elements in the array */ - NV xnv_nv; /* numeric value, if any */ + IV for_rent; + 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 */ - - struct xpvhv_aux* xhv_aux; /* list of pm's for this package is now stored in symtab magic. */ }; +#define xhv_aux xnv_u.xnv_s.xnv_p1 +#define xhv_keys xnv_u.xnv_s.xnv_u2.xnv_i2 + + /* hash a key */ /* FYI: This is the "One-at-a-Time" algorithm by Bob Jenkins * from requirements by Colin Plumb. |