diff options
author | Yves Orton <demerphq@gmail.com> | 2016-10-19 10:36:14 +0200 |
---|---|---|
committer | Yves Orton <demerphq@gmail.com> | 2016-10-19 13:27:59 +0200 |
commit | 4ac46235a35c3293a6effa2b38b5fe6e37ef7985 (patch) | |
tree | 911a7f00e1b8f3a08000318d1f8d2460e2608764 /hv.h | |
parent | 777fa2cb699b74cad6714d203572533dbd583976 (diff) | |
download | perl-4ac46235a35c3293a6effa2b38b5fe6e37ef7985.tar.gz |
handy.h, hv.h: fixup hash s suffix macro definitions, move to hv.h
For some reason s suffix macro definitions intended for handling
constant string arguments were put into handy.h and not into hv.h.
I think this is wrong, especially as the macro defintions have
"drifted" and are not properly defined in terms the right base
macros.
Also we want to have such wrappers for the main hash functions,
so move them all to hv.h, recode them properly in terms of the
right base macros, and add support for the missing functions.
Diffstat (limited to 'hv.h')
-rw-r--r-- | hv.h | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -475,6 +475,8 @@ C<SV*>. (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), \ (val), (hash))) + + #define hv_exists(hv, key, klen) \ (hv_common_key_len((hv), (key), (klen), HV_FETCH_ISEXISTS, NULL, 0) \ ? TRUE : FALSE) @@ -488,6 +490,24 @@ C<SV*>. (MUTABLE_SV(hv_common_key_len((hv), (key), (klen), \ (flags) | HV_DELETE, NULL, 0))) +/* Provide 's' suffix subs for constant strings (and avoid needing to count + * chars). See STR_WITH_LEN in handy.h - because these are macros we cant use + * STR_WITH_LEN to do the work, we have to unroll it. */ +#define hv_existss(hv, key) \ + hv_exists((hv), ("" key ""), (sizeof(key)-1)) + +#define hv_fetchs(hv, key, lval) \ + hv_fetch((hv), ("" key ""), (sizeof(key)-1), (lval)) + +#define hv_deletes(hv, key, flags) \ + hv_delete((hv), ("" key ""), (sizeof(key)-1), (flags)) + +#define hv_name_sets(hv, name, flags) \ + hv_name_set((hv),("" name ""),(sizeof(name)-1), flags) + +#define hv_stores(hv, key, val) \ + hv_store((hv), ("" key ""), (sizeof(key)-1), (val), 0) + #ifdef PERL_CORE # define hv_storehek(hv, hek, val) \ hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \ |