This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add missing files from Unicode 5.1 Character Database
[perl5.git] / hv.h
diff --git a/hv.h b/hv.h
index 29977f1..3906496 100644 (file)
--- a/hv.h
+++ b/hv.h
@@ -50,8 +50,8 @@ struct mro_alg {
 };
 
 struct mro_meta {
-    /* repurposed as a hash holding the different MROs private data. */
-    AV      *mro_linear_dfs; /* cached dfs @ISA linearization */
+    /* a hash holding the different MROs private data.  */
+    HV      *mro_linear_all;
     /* a pointer directly to the current MROs private data.  If mro_linear_all
        is NULL, this owns the SV reference, else it is just a pointer to a
        value stored in and owned by mro_linear_all.  */
@@ -80,31 +80,17 @@ struct xpvhv_aux {
     struct mro_meta *xhv_mro_meta;
 };
 
-#define _XPVHV_ALLOCATED_HEAD                                              \
-    STRLEN     xhv_fill;       /* how full xhv_array currently is */       \
-    STRLEN     xhv_max         /* subscript of last element of xhv_array */
-
-#define _XPVHV_HEAD    \
-    union _xnvu xnv_u; \
-    _XPVHV_ALLOCATED_HEAD
-
 /* hash structure: */
 /* This structure must match the beginning of struct xpvmg in sv.h. */
 struct xpvhv {
-    _XPVHV_HEAD;
+    union _xnvu xnv_u;
+    STRLEN      xhv_fill;       /* how full xhv_array currently is */
+    STRLEN      xhv_max;        /* subscript of last element of xhv_array */
     _XPVMG_HEAD;
 };
 
 #define xhv_keys xiv_u.xivu_iv
 
-typedef struct {
-    _XPVHV_ALLOCATED_HEAD;
-    _XPVMG_HEAD;
-} xpvhv_allocated;
-
-#undef _XPVHV_ALLOCATED_HEAD
-#undef _XPVHV_HEAD
-
 /* hash a key */
 /* FYI: This is the "One-at-a-Time" algorithm by Bob Jenkins
  * from requirements by Colin Plumb.
@@ -367,6 +353,9 @@ C<SV*>.
 #define HVhek_FREEKEY  0x100 /* Internal flag to say key is malloc()ed.  */
 #define HVhek_PLACEHOLD        0x200 /* Internal flag to create placeholder.
                                * (may change, but Storable is a core module) */
+#define HVhek_KEYCANONICAL 0x400 /* Internal flag - key is in canonical form.
+                                   If the string is UTF-8, it cannot be
+                                   converted to bytes. */
 #define HVhek_MASK     0xFF
 
 /* Which flags enable HvHASKFLAGS? Somewhat a hack on a hack, as