Use the funcs in mro.c
*/
-typedef enum {
- MRO_DFS, /* 0 */
- MRO_C3 /* 1 */
-} mro_alg;
+
+/* structure may change, so not public yet */
+struct mro_alg;
struct mro_meta {
AV *mro_linear_dfs; /* cached dfs @ISA linearization */
HV *mro_nextmethod; /* next::method caching */
U32 cache_gen; /* Bumping this invalidates our method cache */
U32 pkg_gen; /* Bumps when local methods/@ISA change */
- mro_alg mro_which; /* which mro alg is in use? */
+ const struct mro_alg *mro_which; /* which mro alg is in use? */
};
/* Subject to change.
hek)
#define hv_store_ent(zlonk, awk, touche, zgruppp) \
- hv_common((zlonk), (awk), NULL, 0, 0, HV_FETCH_ISSTORE, (touche), (zgruppp))
+ ((HE *) hv_common((zlonk), (awk), NULL, 0, 0, HV_FETCH_ISSTORE, \
+ (touche), (zgruppp)))
#define hv_exists_ent(zlonk, awk, zgruppp) \
(hv_common((zlonk), (awk), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (zgruppp))\
? TRUE : FALSE)
#define hv_fetch_ent(zlonk, awk, touche, zgruppp) \
- hv_common((zlonk), (awk), NULL, 0, 0, ((touche) ? HV_FETCH_LVALUE : 0), \
- NULL, (zgruppp))
+ ((HE *) hv_common((zlonk), (awk), NULL, 0, 0, \
+ ((touche) ? HV_FETCH_LVALUE : 0), NULL, (zgruppp)))
#define hv_delete_ent(zlonk, awk, touche, zgruppp) \
((SV *) hv_common((zlonk), (awk), NULL, 0, 0, (touche) | HV_DELETE, \
NULL, (zgruppp)))
+#define hv_store_flags(urkk, zamm, clunk, thwape, sploosh, eee_yow) \
+ ((SV**) hv_common((urkk), NULL, (zamm), (clunk), (eee_yow), \
+ (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (thwape), \
+ (sploosh)))
+
+#define hv_store(urkk, zamm, clunk, thwape, sploosh) \
+ ((SV**) hv_common_key_len((urkk), (zamm), (clunk), \
+ (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), \
+ (thwape), (sploosh)))
+
+#define hv_exists(urkk, zamm, clunk) \
+ (hv_common_key_len((urkk), (zamm), (clunk), HV_FETCH_ISEXISTS, NULL, 0) \
+ ? TRUE : FALSE)
+
+#define hv_fetch(urkk, zamm, clunk, pam) \
+ ((SV**) hv_common_key_len((urkk), (zamm), (clunk), (pam) \
+ ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \
+ : HV_FETCH_JUST_SV, NULL, 0))
+
+#define hv_delete(urkk, zamm, clunk, pam) \
+ ((SV*) hv_common_key_len((urkk), (zamm), (clunk), \
+ (pam) | HV_DELETE, NULL, 0))
+
/* This refcounted he structure is used for storing the hints used for lexical
pragmas. Without threads, it's basically struct he + refcount.
With threads, life gets more complex as the structure needs to be shared