X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hv.h;h=468c072bf05df073eed747fcd0a4ccd305b5225c;hb=842c41230043ce99d4bf7b2c79aed85ce2908e89;hp=390649605ac4a1e02ba910fa19ba1593af727827;hpb=c8e503bfe4136506c95da755e0400990f539bb6a;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hv.h b/hv.h index 3906496..468c072 100644 --- a/hv.h +++ b/hv.h @@ -83,14 +83,12 @@ struct xpvhv_aux { /* hash structure: */ /* This structure must match the beginning of struct xpvmg in sv.h. */ struct xpvhv { - union _xnvu xnv_u; - STRLEN xhv_fill; /* how full xhv_array currently is */ + HV* xmg_stash; /* class package */ + union _xmgu xmg_u; + STRLEN xhv_keys; /* total keys, including placeholders */ STRLEN xhv_max; /* subscript of last element of xhv_array */ - _XPVMG_HEAD; }; -#define xhv_keys xiv_u.xivu_iv - /* hash a key */ /* FYI: This is the "One-at-a-Time" algorithm by Bob Jenkins * from requirements by Colin Plumb. @@ -206,7 +204,7 @@ If you are using C to get values to pass to C to create a new SV, you should consider using C as it is more efficient. -=for apidoc Am|char*|HeUTF8|HE* he|STRLEN len +=for apidoc Am|char*|HeUTF8|HE* he Returns whether the C value returned by C is encoded in UTF-8, doing any necessary dereferencing of possibly C keys. The value returned will be 0 or non-0, not necessarily 1 (or even a value with any low bits set), @@ -236,7 +234,7 @@ C. # define Nullhv Null(HV*) #endif #define HvARRAY(hv) ((hv)->sv_u.svu_hash) -#define HvFILL(hv) ((XPVHV*) SvANY(hv))->xhv_fill +#define HvFILL(hv) Perl_hv_fill(aTHX_ (const HV *)(hv)) #define HvMAX(hv) ((XPVHV*) SvANY(hv))->xhv_max /* This quite intentionally does no flag checking first. That's your responsibility. */