File Coverage

Shared.xs
Criterion Covered Total %
statement 506 506 100.0
branch n/a
condition n/a
subroutine n/a
pod n/a
total 506 506 100.0


line stmt bran cond sub pod time code
1             #define PERL_NO_GET_CONTEXT
2             #include "EXTERN.h"
3             #include "perl.h"
4             #include "XSUB.h"
5              
6             #include "ppport.h"
7              
8             #include "shm_i16.h"
9             #include "shm_i32.h"
10             #include "shm_ii.h"
11             #include "shm_i16s.h"
12             #include "shm_i32s.h"
13             #include "shm_is.h"
14             #include "shm_si16.h"
15             #include "shm_si32.h"
16             #include "shm_si.h"
17             #include "shm_ss.h"
18              
19             #include "XSParseKeyword.h"
20              
21             /* ---- Exception-safe lock guard for rdlock held across Perl API calls ---- */
22              
23 51           static void shm_rdunlock_cleanup(pTHX_ void *ptr) {
24 51           ShmHeader *hdr = (ShmHeader *)ptr;
25 51           shm_rwlock_rdunlock(hdr);
26 51           }
27              
28             #define RDLOCK_GUARD(hdr) \
29             shm_rwlock_rdlock(hdr); \
30             SAVEDESTRUCTOR_X(shm_rdunlock_cleanup, (void*)(hdr))
31              
32             /* ---- Helper macros ---- */
33              
34             #define EXTRACT_MAP(classname, sv) \
35             if (!sv_isobject(sv) || !sv_derived_from(sv, classname)) \
36             croak("Expected a %s object", classname); \
37             ShmHandle* h = INT2PTR(ShmHandle*, SvIV(SvRV(sv))); \
38             if (!h) croak("Attempted to use a destroyed %s object", classname)
39              
40             #define EXTRACT_STR_KEY(sv) \
41             STRLEN _klen; \
42             const char* _kstr = SvPV(sv, _klen); \
43             if (_klen > SHM_MAX_STR_LEN) croak("key too long (max 2GB)"); \
44             bool _kutf8 = SvUTF8(sv) ? true : false
45              
46             #define EXTRACT_STR_VAL(sv) \
47             STRLEN _vlen; \
48             const char* _vstr = SvPV(sv, _vlen); \
49             if (_vlen > SHM_MAX_STR_LEN) croak("value too long (max 2GB)"); \
50             bool _vutf8 = SvUTF8(sv) ? true : false
51              
52             #define REQUIRE_TTL(h) \
53             { ShmHandle *_th = (h)->shard_handles ? (h)->shard_handles[0] : (h); \
54             if (!_th->expires_at) croak("put_ttl requires a TTL-enabled map (pass ttl > 0 to constructor)"); }
55              
56             #define EXTRACT_CURSOR(classname, sv) \
57             if (!sv_isobject(sv) || !sv_derived_from(sv, classname)) \
58             croak("Expected a %s object", classname); \
59             ShmCursor* c = INT2PTR(ShmCursor*, SvIV(SvRV(sv))); \
60             if (!c) croak("Attempted to use a destroyed %s cursor", classname)
61              
62             /* ---- Generic keyword build functions ---- */
63              
64 226           static int build_kw_1arg(pTHX_ OP **out, XSParseKeywordPiece *args[], size_t nargs, void *hookdata) {
65             (void)nargs;
66 226           const char *func = (const char *)hookdata;
67 226           OP *map_op = args[0]->op;
68 226           OP *cvref = newCVREF(0, newGVOP(OP_GV, 0, gv_fetchpv(func, GV_ADD, SVt_PVCV)));
69 226           OP *arglist = op_append_elem(OP_LIST, map_op, cvref);
70 226           *out = op_convert_list(OP_ENTERSUB, OPf_STACKED, arglist);
71 226           return KEYWORD_PLUGIN_EXPR;
72             }
73              
74 349           static int build_kw_2arg(pTHX_ OP **out, XSParseKeywordPiece *args[], size_t nargs, void *hookdata) {
75             (void)nargs;
76 349           const char *func = (const char *)hookdata;
77 349           OP *map_op = args[0]->op;
78 349           OP *key_op = args[1]->op;
79 349           OP *cvref = newCVREF(0, newGVOP(OP_GV, 0, gv_fetchpv(func, GV_ADD, SVt_PVCV)));
80 349           OP *arglist = op_append_elem(OP_LIST, map_op, key_op);
81 349           arglist = op_append_elem(OP_LIST, arglist, cvref);
82 349           *out = op_convert_list(OP_ENTERSUB, OPf_STACKED, arglist);
83 349           return KEYWORD_PLUGIN_EXPR;
84             }
85              
86 375           static int build_kw_3arg(pTHX_ OP **out, XSParseKeywordPiece *args[], size_t nargs, void *hookdata) {
87             (void)nargs;
88 375           const char *func = (const char *)hookdata;
89 375           OP *map_op = args[0]->op;
90 375           OP *key_op = args[1]->op;
91 375           OP *val_op = args[2]->op;
92 375           OP *cvref = newCVREF(0, newGVOP(OP_GV, 0, gv_fetchpv(func, GV_ADD, SVt_PVCV)));
93 375           OP *arglist = op_append_elem(OP_LIST, map_op, key_op);
94 375           arglist = op_append_elem(OP_LIST, arglist, val_op);
95 375           arglist = op_append_elem(OP_LIST, arglist, cvref);
96 375           *out = op_convert_list(OP_ENTERSUB, OPf_STACKED, arglist);
97 375           return KEYWORD_PLUGIN_EXPR;
98             }
99              
100 33           static int build_kw_4arg(pTHX_ OP **out, XSParseKeywordPiece *args[], size_t nargs, void *hookdata) {
101             (void)nargs;
102 33           const char *func = (const char *)hookdata;
103 33           OP *map_op = args[0]->op;
104 33           OP *key_op = args[1]->op;
105 33           OP *val_op = args[2]->op;
106 33           OP *ttl_op = args[3]->op;
107 33           OP *cvref = newCVREF(0, newGVOP(OP_GV, 0, gv_fetchpv(func, GV_ADD, SVt_PVCV)));
108 33           OP *arglist = op_append_elem(OP_LIST, map_op, key_op);
109 33           arglist = op_append_elem(OP_LIST, arglist, val_op);
110 33           arglist = op_append_elem(OP_LIST, arglist, ttl_op);
111 33           arglist = op_append_elem(OP_LIST, arglist, cvref);
112 33           *out = op_convert_list(OP_ENTERSUB, OPf_STACKED, arglist);
113 33           return KEYWORD_PLUGIN_EXPR;
114             }
115              
116 59           static int build_kw_1arg_list(pTHX_ OP **out, XSParseKeywordPiece *args[], size_t nargs, void *hookdata) {
117             (void)nargs;
118 59           const char *func = (const char *)hookdata;
119 59           OP *map_op = args[0]->op;
120 59           OP *cvref = newCVREF(0, newGVOP(OP_GV, 0, gv_fetchpv(func, GV_ADD, SVt_PVCV)));
121 59           OP *arglist = op_append_elem(OP_LIST, map_op, cvref);
122 59           *out = op_convert_list(OP_ENTERSUB, OPf_STACKED | OPf_WANT_LIST, arglist);
123 59           return KEYWORD_PLUGIN_EXPR;
124             }
125              
126             /* ---- Keyword pieces ---- */
127              
128             static const struct XSParseKeywordPieceType pieces_1expr[] = {
129             XPK_TERMEXPR, {0}
130             };
131              
132             static const struct XSParseKeywordPieceType pieces_2expr[] = {
133             XPK_TERMEXPR, XPK_COMMA, XPK_TERMEXPR, {0}
134             };
135              
136             static const struct XSParseKeywordPieceType pieces_3expr[] = {
137             XPK_TERMEXPR, XPK_COMMA, XPK_TERMEXPR, XPK_COMMA, XPK_TERMEXPR, {0}
138             };
139              
140             static const struct XSParseKeywordPieceType pieces_4expr[] = {
141             XPK_TERMEXPR, XPK_COMMA, XPK_TERMEXPR, XPK_COMMA, XPK_TERMEXPR, XPK_COMMA, XPK_TERMEXPR, {0}
142             };
143              
144             /* ---- Keyword hook definitions ---- */
145              
146             #define DEFINE_KW_HOOK(variant, PKG, kw, nargs, builder) \
147             static const struct XSParseKeywordHooks hooks_shm_##variant##_##kw = { \
148             .flags = XPK_FLAG_EXPR, \
149             .permit_hintkey = "Data::HashMap::Shared::" PKG "/shm_" #variant "_" #kw, \
150             .pieces = pieces_##nargs##expr, \
151             .build = builder, \
152             };
153              
154             /* I16 (int16 -> int16, counters) */
155             DEFINE_KW_HOOK(i16, "I16", put, 3, build_kw_3arg)
156             DEFINE_KW_HOOK(i16, "I16", get, 2, build_kw_2arg)
157             DEFINE_KW_HOOK(i16, "I16", remove, 2, build_kw_2arg)
158             DEFINE_KW_HOOK(i16, "I16", exists, 2, build_kw_2arg)
159             DEFINE_KW_HOOK(i16, "I16", incr, 2, build_kw_2arg)
160             DEFINE_KW_HOOK(i16, "I16", decr, 2, build_kw_2arg)
161             DEFINE_KW_HOOK(i16, "I16", incr_by, 3, build_kw_3arg)
162             DEFINE_KW_HOOK(i16, "I16", size, 1, build_kw_1arg)
163             DEFINE_KW_HOOK(i16, "I16", keys, 1, build_kw_1arg_list)
164             DEFINE_KW_HOOK(i16, "I16", values, 1, build_kw_1arg_list)
165             DEFINE_KW_HOOK(i16, "I16", items, 1, build_kw_1arg_list)
166             DEFINE_KW_HOOK(i16, "I16", each, 1, build_kw_1arg_list)
167             DEFINE_KW_HOOK(i16, "I16", iter_reset, 1, build_kw_1arg)
168             DEFINE_KW_HOOK(i16, "I16", clear, 1, build_kw_1arg)
169             DEFINE_KW_HOOK(i16, "I16", to_hash, 1, build_kw_1arg)
170             DEFINE_KW_HOOK(i16, "I16", max_entries, 1, build_kw_1arg)
171             DEFINE_KW_HOOK(i16, "I16", get_or_set, 3, build_kw_3arg)
172             DEFINE_KW_HOOK(i16, "I16", put_ttl, 4, build_kw_4arg)
173             DEFINE_KW_HOOK(i16, "I16", max_size, 1, build_kw_1arg)
174             DEFINE_KW_HOOK(i16, "I16", ttl, 1, build_kw_1arg)
175             DEFINE_KW_HOOK(i16, "I16", cursor, 1, build_kw_1arg)
176             DEFINE_KW_HOOK(i16, "I16", cursor_next, 1, build_kw_1arg_list)
177             DEFINE_KW_HOOK(i16, "I16", cursor_reset, 1, build_kw_1arg)
178             DEFINE_KW_HOOK(i16, "I16", cursor_seek, 2, build_kw_2arg)
179             DEFINE_KW_HOOK(i16, "I16", ttl_remaining, 2, build_kw_2arg)
180             DEFINE_KW_HOOK(i16, "I16", capacity, 1, build_kw_1arg)
181             DEFINE_KW_HOOK(i16, "I16", tombstones, 1, build_kw_1arg)
182             DEFINE_KW_HOOK(i16, "I16", take, 2, build_kw_2arg)
183             DEFINE_KW_HOOK(i16, "I16", pop, 1, build_kw_1arg)
184             DEFINE_KW_HOOK(i16, "I16", shift, 1, build_kw_1arg)
185             DEFINE_KW_HOOK(i16, "I16", drain, 2, build_kw_2arg)
186             DEFINE_KW_HOOK(i16, "I16", flush_expired, 1, build_kw_1arg)
187             DEFINE_KW_HOOK(i16, "I16", flush_expired_partial, 2, build_kw_2arg)
188             DEFINE_KW_HOOK(i16, "I16", mmap_size, 1, build_kw_1arg)
189             DEFINE_KW_HOOK(i16, "I16", touch, 2, build_kw_2arg)
190             DEFINE_KW_HOOK(i16, "I16", reserve, 2, build_kw_2arg)
191             DEFINE_KW_HOOK(i16, "I16", stat_evictions, 1, build_kw_1arg)
192             DEFINE_KW_HOOK(i16, "I16", stat_expired, 1, build_kw_1arg)
193             DEFINE_KW_HOOK(i16, "I16", stat_recoveries, 1, build_kw_1arg)
194             DEFINE_KW_HOOK(i16, "I16", arena_used, 1, build_kw_1arg)
195             DEFINE_KW_HOOK(i16, "I16", arena_cap, 1, build_kw_1arg)
196             DEFINE_KW_HOOK(i16, "I16", add, 3, build_kw_3arg)
197             DEFINE_KW_HOOK(i16, "I16", update, 3, build_kw_3arg)
198             DEFINE_KW_HOOK(i16, "I16", swap, 3, build_kw_3arg)
199             DEFINE_KW_HOOK(i16, "I16", cas, 4, build_kw_4arg)
200             DEFINE_KW_HOOK(i16, "I16", persist, 2, build_kw_2arg)
201             DEFINE_KW_HOOK(i16, "I16", set_ttl, 3, build_kw_3arg)
202              
203             /* I32 (int32 -> int32, counters) */
204             DEFINE_KW_HOOK(i32, "I32", put, 3, build_kw_3arg)
205             DEFINE_KW_HOOK(i32, "I32", get, 2, build_kw_2arg)
206             DEFINE_KW_HOOK(i32, "I32", remove, 2, build_kw_2arg)
207             DEFINE_KW_HOOK(i32, "I32", exists, 2, build_kw_2arg)
208             DEFINE_KW_HOOK(i32, "I32", incr, 2, build_kw_2arg)
209             DEFINE_KW_HOOK(i32, "I32", decr, 2, build_kw_2arg)
210             DEFINE_KW_HOOK(i32, "I32", incr_by, 3, build_kw_3arg)
211             DEFINE_KW_HOOK(i32, "I32", size, 1, build_kw_1arg)
212             DEFINE_KW_HOOK(i32, "I32", keys, 1, build_kw_1arg_list)
213             DEFINE_KW_HOOK(i32, "I32", values, 1, build_kw_1arg_list)
214             DEFINE_KW_HOOK(i32, "I32", items, 1, build_kw_1arg_list)
215             DEFINE_KW_HOOK(i32, "I32", each, 1, build_kw_1arg_list)
216             DEFINE_KW_HOOK(i32, "I32", iter_reset, 1, build_kw_1arg)
217             DEFINE_KW_HOOK(i32, "I32", clear, 1, build_kw_1arg)
218             DEFINE_KW_HOOK(i32, "I32", to_hash, 1, build_kw_1arg)
219             DEFINE_KW_HOOK(i32, "I32", max_entries, 1, build_kw_1arg)
220             DEFINE_KW_HOOK(i32, "I32", get_or_set, 3, build_kw_3arg)
221             DEFINE_KW_HOOK(i32, "I32", put_ttl, 4, build_kw_4arg)
222             DEFINE_KW_HOOK(i32, "I32", max_size, 1, build_kw_1arg)
223             DEFINE_KW_HOOK(i32, "I32", ttl, 1, build_kw_1arg)
224             DEFINE_KW_HOOK(i32, "I32", cursor, 1, build_kw_1arg)
225             DEFINE_KW_HOOK(i32, "I32", cursor_next, 1, build_kw_1arg_list)
226             DEFINE_KW_HOOK(i32, "I32", cursor_reset, 1, build_kw_1arg)
227             DEFINE_KW_HOOK(i32, "I32", cursor_seek, 2, build_kw_2arg)
228             DEFINE_KW_HOOK(i32, "I32", ttl_remaining, 2, build_kw_2arg)
229             DEFINE_KW_HOOK(i32, "I32", capacity, 1, build_kw_1arg)
230             DEFINE_KW_HOOK(i32, "I32", tombstones, 1, build_kw_1arg)
231             DEFINE_KW_HOOK(i32, "I32", take, 2, build_kw_2arg)
232             DEFINE_KW_HOOK(i32, "I32", pop, 1, build_kw_1arg)
233             DEFINE_KW_HOOK(i32, "I32", shift, 1, build_kw_1arg)
234             DEFINE_KW_HOOK(i32, "I32", drain, 2, build_kw_2arg)
235             DEFINE_KW_HOOK(i32, "I32", flush_expired, 1, build_kw_1arg)
236             DEFINE_KW_HOOK(i32, "I32", flush_expired_partial, 2, build_kw_2arg)
237             DEFINE_KW_HOOK(i32, "I32", mmap_size, 1, build_kw_1arg)
238             DEFINE_KW_HOOK(i32, "I32", touch, 2, build_kw_2arg)
239             DEFINE_KW_HOOK(i32, "I32", reserve, 2, build_kw_2arg)
240             DEFINE_KW_HOOK(i32, "I32", stat_evictions, 1, build_kw_1arg)
241             DEFINE_KW_HOOK(i32, "I32", stat_expired, 1, build_kw_1arg)
242             DEFINE_KW_HOOK(i32, "I32", stat_recoveries, 1, build_kw_1arg)
243             DEFINE_KW_HOOK(i32, "I32", arena_used, 1, build_kw_1arg)
244             DEFINE_KW_HOOK(i32, "I32", arena_cap, 1, build_kw_1arg)
245             DEFINE_KW_HOOK(i32, "I32", add, 3, build_kw_3arg)
246             DEFINE_KW_HOOK(i32, "I32", update, 3, build_kw_3arg)
247             DEFINE_KW_HOOK(i32, "I32", swap, 3, build_kw_3arg)
248             DEFINE_KW_HOOK(i32, "I32", cas, 4, build_kw_4arg)
249             DEFINE_KW_HOOK(i32, "I32", persist, 2, build_kw_2arg)
250             DEFINE_KW_HOOK(i32, "I32", set_ttl, 3, build_kw_3arg)
251              
252             /* II (int64 -> int64, counters) */
253             DEFINE_KW_HOOK(ii, "II", put, 3, build_kw_3arg)
254             DEFINE_KW_HOOK(ii, "II", get, 2, build_kw_2arg)
255             DEFINE_KW_HOOK(ii, "II", remove, 2, build_kw_2arg)
256             DEFINE_KW_HOOK(ii, "II", exists, 2, build_kw_2arg)
257             DEFINE_KW_HOOK(ii, "II", incr, 2, build_kw_2arg)
258             DEFINE_KW_HOOK(ii, "II", decr, 2, build_kw_2arg)
259             DEFINE_KW_HOOK(ii, "II", incr_by, 3, build_kw_3arg)
260             DEFINE_KW_HOOK(ii, "II", size, 1, build_kw_1arg)
261             DEFINE_KW_HOOK(ii, "II", keys, 1, build_kw_1arg_list)
262             DEFINE_KW_HOOK(ii, "II", values, 1, build_kw_1arg_list)
263             DEFINE_KW_HOOK(ii, "II", items, 1, build_kw_1arg_list)
264             DEFINE_KW_HOOK(ii, "II", each, 1, build_kw_1arg_list)
265             DEFINE_KW_HOOK(ii, "II", iter_reset, 1, build_kw_1arg)
266             DEFINE_KW_HOOK(ii, "II", clear, 1, build_kw_1arg)
267             DEFINE_KW_HOOK(ii, "II", to_hash, 1, build_kw_1arg)
268             DEFINE_KW_HOOK(ii, "II", max_entries, 1, build_kw_1arg)
269             DEFINE_KW_HOOK(ii, "II", get_or_set, 3, build_kw_3arg)
270             DEFINE_KW_HOOK(ii, "II", put_ttl, 4, build_kw_4arg)
271             DEFINE_KW_HOOK(ii, "II", max_size, 1, build_kw_1arg)
272             DEFINE_KW_HOOK(ii, "II", ttl, 1, build_kw_1arg)
273             DEFINE_KW_HOOK(ii, "II", cursor, 1, build_kw_1arg)
274             DEFINE_KW_HOOK(ii, "II", cursor_next, 1, build_kw_1arg_list)
275             DEFINE_KW_HOOK(ii, "II", cursor_reset, 1, build_kw_1arg)
276             DEFINE_KW_HOOK(ii, "II", cursor_seek, 2, build_kw_2arg)
277             DEFINE_KW_HOOK(ii, "II", ttl_remaining, 2, build_kw_2arg)
278             DEFINE_KW_HOOK(ii, "II", capacity, 1, build_kw_1arg)
279             DEFINE_KW_HOOK(ii, "II", tombstones, 1, build_kw_1arg)
280             DEFINE_KW_HOOK(ii, "II", take, 2, build_kw_2arg)
281             DEFINE_KW_HOOK(ii, "II", pop, 1, build_kw_1arg)
282             DEFINE_KW_HOOK(ii, "II", shift, 1, build_kw_1arg)
283             DEFINE_KW_HOOK(ii, "II", drain, 2, build_kw_2arg)
284             DEFINE_KW_HOOK(ii, "II", flush_expired, 1, build_kw_1arg)
285             DEFINE_KW_HOOK(ii, "II", flush_expired_partial, 2, build_kw_2arg)
286             DEFINE_KW_HOOK(ii, "II", mmap_size, 1, build_kw_1arg)
287             DEFINE_KW_HOOK(ii, "II", touch, 2, build_kw_2arg)
288             DEFINE_KW_HOOK(ii, "II", reserve, 2, build_kw_2arg)
289             DEFINE_KW_HOOK(ii, "II", stat_evictions, 1, build_kw_1arg)
290             DEFINE_KW_HOOK(ii, "II", stat_expired, 1, build_kw_1arg)
291             DEFINE_KW_HOOK(ii, "II", stat_recoveries, 1, build_kw_1arg)
292             DEFINE_KW_HOOK(ii, "II", arena_used, 1, build_kw_1arg)
293             DEFINE_KW_HOOK(ii, "II", arena_cap, 1, build_kw_1arg)
294             DEFINE_KW_HOOK(ii, "II", add, 3, build_kw_3arg)
295             DEFINE_KW_HOOK(ii, "II", update, 3, build_kw_3arg)
296             DEFINE_KW_HOOK(ii, "II", swap, 3, build_kw_3arg)
297             DEFINE_KW_HOOK(ii, "II", cas, 4, build_kw_4arg)
298             DEFINE_KW_HOOK(ii, "II", persist, 2, build_kw_2arg)
299             DEFINE_KW_HOOK(ii, "II", set_ttl, 3, build_kw_3arg)
300              
301             /* I16S (int16 -> string, no counters) */
302             DEFINE_KW_HOOK(i16s, "I16S", put, 3, build_kw_3arg)
303             DEFINE_KW_HOOK(i16s, "I16S", get, 2, build_kw_2arg)
304             DEFINE_KW_HOOK(i16s, "I16S", remove, 2, build_kw_2arg)
305             DEFINE_KW_HOOK(i16s, "I16S", exists, 2, build_kw_2arg)
306             DEFINE_KW_HOOK(i16s, "I16S", size, 1, build_kw_1arg)
307             DEFINE_KW_HOOK(i16s, "I16S", keys, 1, build_kw_1arg_list)
308             DEFINE_KW_HOOK(i16s, "I16S", values, 1, build_kw_1arg_list)
309             DEFINE_KW_HOOK(i16s, "I16S", items, 1, build_kw_1arg_list)
310             DEFINE_KW_HOOK(i16s, "I16S", each, 1, build_kw_1arg_list)
311             DEFINE_KW_HOOK(i16s, "I16S", iter_reset, 1, build_kw_1arg)
312             DEFINE_KW_HOOK(i16s, "I16S", clear, 1, build_kw_1arg)
313             DEFINE_KW_HOOK(i16s, "I16S", to_hash, 1, build_kw_1arg)
314             DEFINE_KW_HOOK(i16s, "I16S", max_entries, 1, build_kw_1arg)
315             DEFINE_KW_HOOK(i16s, "I16S", get_or_set, 3, build_kw_3arg)
316             DEFINE_KW_HOOK(i16s, "I16S", put_ttl, 4, build_kw_4arg)
317             DEFINE_KW_HOOK(i16s, "I16S", max_size, 1, build_kw_1arg)
318             DEFINE_KW_HOOK(i16s, "I16S", ttl, 1, build_kw_1arg)
319             DEFINE_KW_HOOK(i16s, "I16S", cursor, 1, build_kw_1arg)
320             DEFINE_KW_HOOK(i16s, "I16S", cursor_next, 1, build_kw_1arg_list)
321             DEFINE_KW_HOOK(i16s, "I16S", cursor_reset, 1, build_kw_1arg)
322             DEFINE_KW_HOOK(i16s, "I16S", cursor_seek, 2, build_kw_2arg)
323             DEFINE_KW_HOOK(i16s, "I16S", ttl_remaining, 2, build_kw_2arg)
324             DEFINE_KW_HOOK(i16s, "I16S", capacity, 1, build_kw_1arg)
325             DEFINE_KW_HOOK(i16s, "I16S", tombstones, 1, build_kw_1arg)
326             DEFINE_KW_HOOK(i16s, "I16S", take, 2, build_kw_2arg)
327             DEFINE_KW_HOOK(i16s, "I16S", pop, 1, build_kw_1arg)
328             DEFINE_KW_HOOK(i16s, "I16S", shift, 1, build_kw_1arg)
329             DEFINE_KW_HOOK(i16s, "I16S", drain, 2, build_kw_2arg)
330             DEFINE_KW_HOOK(i16s, "I16S", flush_expired, 1, build_kw_1arg)
331             DEFINE_KW_HOOK(i16s, "I16S", flush_expired_partial, 2, build_kw_2arg)
332             DEFINE_KW_HOOK(i16s, "I16S", mmap_size, 1, build_kw_1arg)
333             DEFINE_KW_HOOK(i16s, "I16S", touch, 2, build_kw_2arg)
334             DEFINE_KW_HOOK(i16s, "I16S", reserve, 2, build_kw_2arg)
335             DEFINE_KW_HOOK(i16s, "I16S", stat_evictions, 1, build_kw_1arg)
336             DEFINE_KW_HOOK(i16s, "I16S", stat_expired, 1, build_kw_1arg)
337             DEFINE_KW_HOOK(i16s, "I16S", stat_recoveries, 1, build_kw_1arg)
338             DEFINE_KW_HOOK(i16s, "I16S", arena_used, 1, build_kw_1arg)
339             DEFINE_KW_HOOK(i16s, "I16S", arena_cap, 1, build_kw_1arg)
340             DEFINE_KW_HOOK(i16s, "I16S", add, 3, build_kw_3arg)
341             DEFINE_KW_HOOK(i16s, "I16S", update, 3, build_kw_3arg)
342             DEFINE_KW_HOOK(i16s, "I16S", swap, 3, build_kw_3arg)
343             DEFINE_KW_HOOK(i16s, "I16S", persist, 2, build_kw_2arg)
344             DEFINE_KW_HOOK(i16s, "I16S", set_ttl, 3, build_kw_3arg)
345              
346             /* I32S (int32 -> string, no counters) */
347             DEFINE_KW_HOOK(i32s, "I32S", put, 3, build_kw_3arg)
348             DEFINE_KW_HOOK(i32s, "I32S", get, 2, build_kw_2arg)
349             DEFINE_KW_HOOK(i32s, "I32S", remove, 2, build_kw_2arg)
350             DEFINE_KW_HOOK(i32s, "I32S", exists, 2, build_kw_2arg)
351             DEFINE_KW_HOOK(i32s, "I32S", size, 1, build_kw_1arg)
352             DEFINE_KW_HOOK(i32s, "I32S", keys, 1, build_kw_1arg_list)
353             DEFINE_KW_HOOK(i32s, "I32S", values, 1, build_kw_1arg_list)
354             DEFINE_KW_HOOK(i32s, "I32S", items, 1, build_kw_1arg_list)
355             DEFINE_KW_HOOK(i32s, "I32S", each, 1, build_kw_1arg_list)
356             DEFINE_KW_HOOK(i32s, "I32S", iter_reset, 1, build_kw_1arg)
357             DEFINE_KW_HOOK(i32s, "I32S", clear, 1, build_kw_1arg)
358             DEFINE_KW_HOOK(i32s, "I32S", to_hash, 1, build_kw_1arg)
359             DEFINE_KW_HOOK(i32s, "I32S", max_entries, 1, build_kw_1arg)
360             DEFINE_KW_HOOK(i32s, "I32S", get_or_set, 3, build_kw_3arg)
361             DEFINE_KW_HOOK(i32s, "I32S", put_ttl, 4, build_kw_4arg)
362             DEFINE_KW_HOOK(i32s, "I32S", max_size, 1, build_kw_1arg)
363             DEFINE_KW_HOOK(i32s, "I32S", ttl, 1, build_kw_1arg)
364             DEFINE_KW_HOOK(i32s, "I32S", cursor, 1, build_kw_1arg)
365             DEFINE_KW_HOOK(i32s, "I32S", cursor_next, 1, build_kw_1arg_list)
366             DEFINE_KW_HOOK(i32s, "I32S", cursor_reset, 1, build_kw_1arg)
367             DEFINE_KW_HOOK(i32s, "I32S", cursor_seek, 2, build_kw_2arg)
368             DEFINE_KW_HOOK(i32s, "I32S", ttl_remaining, 2, build_kw_2arg)
369             DEFINE_KW_HOOK(i32s, "I32S", capacity, 1, build_kw_1arg)
370             DEFINE_KW_HOOK(i32s, "I32S", tombstones, 1, build_kw_1arg)
371             DEFINE_KW_HOOK(i32s, "I32S", take, 2, build_kw_2arg)
372             DEFINE_KW_HOOK(i32s, "I32S", pop, 1, build_kw_1arg)
373             DEFINE_KW_HOOK(i32s, "I32S", shift, 1, build_kw_1arg)
374             DEFINE_KW_HOOK(i32s, "I32S", drain, 2, build_kw_2arg)
375             DEFINE_KW_HOOK(i32s, "I32S", flush_expired, 1, build_kw_1arg)
376             DEFINE_KW_HOOK(i32s, "I32S", flush_expired_partial, 2, build_kw_2arg)
377             DEFINE_KW_HOOK(i32s, "I32S", mmap_size, 1, build_kw_1arg)
378             DEFINE_KW_HOOK(i32s, "I32S", touch, 2, build_kw_2arg)
379             DEFINE_KW_HOOK(i32s, "I32S", reserve, 2, build_kw_2arg)
380             DEFINE_KW_HOOK(i32s, "I32S", stat_evictions, 1, build_kw_1arg)
381             DEFINE_KW_HOOK(i32s, "I32S", stat_expired, 1, build_kw_1arg)
382             DEFINE_KW_HOOK(i32s, "I32S", stat_recoveries, 1, build_kw_1arg)
383             DEFINE_KW_HOOK(i32s, "I32S", arena_used, 1, build_kw_1arg)
384             DEFINE_KW_HOOK(i32s, "I32S", arena_cap, 1, build_kw_1arg)
385             DEFINE_KW_HOOK(i32s, "I32S", add, 3, build_kw_3arg)
386             DEFINE_KW_HOOK(i32s, "I32S", update, 3, build_kw_3arg)
387             DEFINE_KW_HOOK(i32s, "I32S", swap, 3, build_kw_3arg)
388             DEFINE_KW_HOOK(i32s, "I32S", persist, 2, build_kw_2arg)
389             DEFINE_KW_HOOK(i32s, "I32S", set_ttl, 3, build_kw_3arg)
390              
391             /* IS (int64 -> string, no counters) */
392             DEFINE_KW_HOOK(is, "IS", put, 3, build_kw_3arg)
393             DEFINE_KW_HOOK(is, "IS", get, 2, build_kw_2arg)
394             DEFINE_KW_HOOK(is, "IS", remove, 2, build_kw_2arg)
395             DEFINE_KW_HOOK(is, "IS", exists, 2, build_kw_2arg)
396             DEFINE_KW_HOOK(is, "IS", size, 1, build_kw_1arg)
397             DEFINE_KW_HOOK(is, "IS", keys, 1, build_kw_1arg_list)
398             DEFINE_KW_HOOK(is, "IS", values, 1, build_kw_1arg_list)
399             DEFINE_KW_HOOK(is, "IS", items, 1, build_kw_1arg_list)
400             DEFINE_KW_HOOK(is, "IS", each, 1, build_kw_1arg_list)
401             DEFINE_KW_HOOK(is, "IS", iter_reset, 1, build_kw_1arg)
402             DEFINE_KW_HOOK(is, "IS", clear, 1, build_kw_1arg)
403             DEFINE_KW_HOOK(is, "IS", to_hash, 1, build_kw_1arg)
404             DEFINE_KW_HOOK(is, "IS", max_entries, 1, build_kw_1arg)
405             DEFINE_KW_HOOK(is, "IS", get_or_set, 3, build_kw_3arg)
406             DEFINE_KW_HOOK(is, "IS", put_ttl, 4, build_kw_4arg)
407             DEFINE_KW_HOOK(is, "IS", max_size, 1, build_kw_1arg)
408             DEFINE_KW_HOOK(is, "IS", ttl, 1, build_kw_1arg)
409             DEFINE_KW_HOOK(is, "IS", cursor, 1, build_kw_1arg)
410             DEFINE_KW_HOOK(is, "IS", cursor_next, 1, build_kw_1arg_list)
411             DEFINE_KW_HOOK(is, "IS", cursor_reset, 1, build_kw_1arg)
412             DEFINE_KW_HOOK(is, "IS", cursor_seek, 2, build_kw_2arg)
413             DEFINE_KW_HOOK(is, "IS", ttl_remaining, 2, build_kw_2arg)
414             DEFINE_KW_HOOK(is, "IS", capacity, 1, build_kw_1arg)
415             DEFINE_KW_HOOK(is, "IS", tombstones, 1, build_kw_1arg)
416             DEFINE_KW_HOOK(is, "IS", take, 2, build_kw_2arg)
417             DEFINE_KW_HOOK(is, "IS", pop, 1, build_kw_1arg)
418             DEFINE_KW_HOOK(is, "IS", shift, 1, build_kw_1arg)
419             DEFINE_KW_HOOK(is, "IS", drain, 2, build_kw_2arg)
420             DEFINE_KW_HOOK(is, "IS", flush_expired, 1, build_kw_1arg)
421             DEFINE_KW_HOOK(is, "IS", flush_expired_partial, 2, build_kw_2arg)
422             DEFINE_KW_HOOK(is, "IS", mmap_size, 1, build_kw_1arg)
423             DEFINE_KW_HOOK(is, "IS", touch, 2, build_kw_2arg)
424             DEFINE_KW_HOOK(is, "IS", reserve, 2, build_kw_2arg)
425             DEFINE_KW_HOOK(is, "IS", stat_evictions, 1, build_kw_1arg)
426             DEFINE_KW_HOOK(is, "IS", stat_expired, 1, build_kw_1arg)
427             DEFINE_KW_HOOK(is, "IS", stat_recoveries, 1, build_kw_1arg)
428             DEFINE_KW_HOOK(is, "IS", arena_used, 1, build_kw_1arg)
429             DEFINE_KW_HOOK(is, "IS", arena_cap, 1, build_kw_1arg)
430             DEFINE_KW_HOOK(is, "IS", add, 3, build_kw_3arg)
431             DEFINE_KW_HOOK(is, "IS", update, 3, build_kw_3arg)
432             DEFINE_KW_HOOK(is, "IS", swap, 3, build_kw_3arg)
433             DEFINE_KW_HOOK(is, "IS", persist, 2, build_kw_2arg)
434             DEFINE_KW_HOOK(is, "IS", set_ttl, 3, build_kw_3arg)
435              
436             /* SI16 (string -> int16, counters) */
437             DEFINE_KW_HOOK(si16, "SI16", put, 3, build_kw_3arg)
438             DEFINE_KW_HOOK(si16, "SI16", get, 2, build_kw_2arg)
439             DEFINE_KW_HOOK(si16, "SI16", remove, 2, build_kw_2arg)
440             DEFINE_KW_HOOK(si16, "SI16", exists, 2, build_kw_2arg)
441             DEFINE_KW_HOOK(si16, "SI16", incr, 2, build_kw_2arg)
442             DEFINE_KW_HOOK(si16, "SI16", decr, 2, build_kw_2arg)
443             DEFINE_KW_HOOK(si16, "SI16", incr_by, 3, build_kw_3arg)
444             DEFINE_KW_HOOK(si16, "SI16", size, 1, build_kw_1arg)
445             DEFINE_KW_HOOK(si16, "SI16", keys, 1, build_kw_1arg_list)
446             DEFINE_KW_HOOK(si16, "SI16", values, 1, build_kw_1arg_list)
447             DEFINE_KW_HOOK(si16, "SI16", items, 1, build_kw_1arg_list)
448             DEFINE_KW_HOOK(si16, "SI16", each, 1, build_kw_1arg_list)
449             DEFINE_KW_HOOK(si16, "SI16", iter_reset, 1, build_kw_1arg)
450             DEFINE_KW_HOOK(si16, "SI16", clear, 1, build_kw_1arg)
451             DEFINE_KW_HOOK(si16, "SI16", to_hash, 1, build_kw_1arg)
452             DEFINE_KW_HOOK(si16, "SI16", max_entries, 1, build_kw_1arg)
453             DEFINE_KW_HOOK(si16, "SI16", get_or_set, 3, build_kw_3arg)
454             DEFINE_KW_HOOK(si16, "SI16", put_ttl, 4, build_kw_4arg)
455             DEFINE_KW_HOOK(si16, "SI16", max_size, 1, build_kw_1arg)
456             DEFINE_KW_HOOK(si16, "SI16", ttl, 1, build_kw_1arg)
457             DEFINE_KW_HOOK(si16, "SI16", cursor, 1, build_kw_1arg)
458             DEFINE_KW_HOOK(si16, "SI16", cursor_next, 1, build_kw_1arg_list)
459             DEFINE_KW_HOOK(si16, "SI16", cursor_reset, 1, build_kw_1arg)
460             DEFINE_KW_HOOK(si16, "SI16", cursor_seek, 2, build_kw_2arg)
461             DEFINE_KW_HOOK(si16, "SI16", ttl_remaining, 2, build_kw_2arg)
462             DEFINE_KW_HOOK(si16, "SI16", capacity, 1, build_kw_1arg)
463             DEFINE_KW_HOOK(si16, "SI16", tombstones, 1, build_kw_1arg)
464             DEFINE_KW_HOOK(si16, "SI16", take, 2, build_kw_2arg)
465             DEFINE_KW_HOOK(si16, "SI16", pop, 1, build_kw_1arg)
466             DEFINE_KW_HOOK(si16, "SI16", shift, 1, build_kw_1arg)
467             DEFINE_KW_HOOK(si16, "SI16", drain, 2, build_kw_2arg)
468             DEFINE_KW_HOOK(si16, "SI16", flush_expired, 1, build_kw_1arg)
469             DEFINE_KW_HOOK(si16, "SI16", flush_expired_partial, 2, build_kw_2arg)
470             DEFINE_KW_HOOK(si16, "SI16", mmap_size, 1, build_kw_1arg)
471             DEFINE_KW_HOOK(si16, "SI16", touch, 2, build_kw_2arg)
472             DEFINE_KW_HOOK(si16, "SI16", reserve, 2, build_kw_2arg)
473             DEFINE_KW_HOOK(si16, "SI16", stat_evictions, 1, build_kw_1arg)
474             DEFINE_KW_HOOK(si16, "SI16", stat_expired, 1, build_kw_1arg)
475             DEFINE_KW_HOOK(si16, "SI16", stat_recoveries, 1, build_kw_1arg)
476             DEFINE_KW_HOOK(si16, "SI16", arena_used, 1, build_kw_1arg)
477             DEFINE_KW_HOOK(si16, "SI16", arena_cap, 1, build_kw_1arg)
478             DEFINE_KW_HOOK(si16, "SI16", add, 3, build_kw_3arg)
479             DEFINE_KW_HOOK(si16, "SI16", update, 3, build_kw_3arg)
480             DEFINE_KW_HOOK(si16, "SI16", swap, 3, build_kw_3arg)
481             DEFINE_KW_HOOK(si16, "SI16", cas, 4, build_kw_4arg)
482             DEFINE_KW_HOOK(si16, "SI16", persist, 2, build_kw_2arg)
483             DEFINE_KW_HOOK(si16, "SI16", set_ttl, 3, build_kw_3arg)
484              
485             /* SI32 (string -> int32, counters) */
486             DEFINE_KW_HOOK(si32, "SI32", put, 3, build_kw_3arg)
487             DEFINE_KW_HOOK(si32, "SI32", get, 2, build_kw_2arg)
488             DEFINE_KW_HOOK(si32, "SI32", remove, 2, build_kw_2arg)
489             DEFINE_KW_HOOK(si32, "SI32", exists, 2, build_kw_2arg)
490             DEFINE_KW_HOOK(si32, "SI32", incr, 2, build_kw_2arg)
491             DEFINE_KW_HOOK(si32, "SI32", decr, 2, build_kw_2arg)
492             DEFINE_KW_HOOK(si32, "SI32", incr_by, 3, build_kw_3arg)
493             DEFINE_KW_HOOK(si32, "SI32", size, 1, build_kw_1arg)
494             DEFINE_KW_HOOK(si32, "SI32", keys, 1, build_kw_1arg_list)
495             DEFINE_KW_HOOK(si32, "SI32", values, 1, build_kw_1arg_list)
496             DEFINE_KW_HOOK(si32, "SI32", items, 1, build_kw_1arg_list)
497             DEFINE_KW_HOOK(si32, "SI32", each, 1, build_kw_1arg_list)
498             DEFINE_KW_HOOK(si32, "SI32", iter_reset, 1, build_kw_1arg)
499             DEFINE_KW_HOOK(si32, "SI32", clear, 1, build_kw_1arg)
500             DEFINE_KW_HOOK(si32, "SI32", to_hash, 1, build_kw_1arg)
501             DEFINE_KW_HOOK(si32, "SI32", max_entries, 1, build_kw_1arg)
502             DEFINE_KW_HOOK(si32, "SI32", get_or_set, 3, build_kw_3arg)
503             DEFINE_KW_HOOK(si32, "SI32", put_ttl, 4, build_kw_4arg)
504             DEFINE_KW_HOOK(si32, "SI32", max_size, 1, build_kw_1arg)
505             DEFINE_KW_HOOK(si32, "SI32", ttl, 1, build_kw_1arg)
506             DEFINE_KW_HOOK(si32, "SI32", cursor, 1, build_kw_1arg)
507             DEFINE_KW_HOOK(si32, "SI32", cursor_next, 1, build_kw_1arg_list)
508             DEFINE_KW_HOOK(si32, "SI32", cursor_reset, 1, build_kw_1arg)
509             DEFINE_KW_HOOK(si32, "SI32", cursor_seek, 2, build_kw_2arg)
510             DEFINE_KW_HOOK(si32, "SI32", ttl_remaining, 2, build_kw_2arg)
511             DEFINE_KW_HOOK(si32, "SI32", capacity, 1, build_kw_1arg)
512             DEFINE_KW_HOOK(si32, "SI32", tombstones, 1, build_kw_1arg)
513             DEFINE_KW_HOOK(si32, "SI32", take, 2, build_kw_2arg)
514             DEFINE_KW_HOOK(si32, "SI32", pop, 1, build_kw_1arg)
515             DEFINE_KW_HOOK(si32, "SI32", shift, 1, build_kw_1arg)
516             DEFINE_KW_HOOK(si32, "SI32", drain, 2, build_kw_2arg)
517             DEFINE_KW_HOOK(si32, "SI32", flush_expired, 1, build_kw_1arg)
518             DEFINE_KW_HOOK(si32, "SI32", flush_expired_partial, 2, build_kw_2arg)
519             DEFINE_KW_HOOK(si32, "SI32", mmap_size, 1, build_kw_1arg)
520             DEFINE_KW_HOOK(si32, "SI32", touch, 2, build_kw_2arg)
521             DEFINE_KW_HOOK(si32, "SI32", reserve, 2, build_kw_2arg)
522             DEFINE_KW_HOOK(si32, "SI32", stat_evictions, 1, build_kw_1arg)
523             DEFINE_KW_HOOK(si32, "SI32", stat_expired, 1, build_kw_1arg)
524             DEFINE_KW_HOOK(si32, "SI32", stat_recoveries, 1, build_kw_1arg)
525             DEFINE_KW_HOOK(si32, "SI32", arena_used, 1, build_kw_1arg)
526             DEFINE_KW_HOOK(si32, "SI32", arena_cap, 1, build_kw_1arg)
527             DEFINE_KW_HOOK(si32, "SI32", add, 3, build_kw_3arg)
528             DEFINE_KW_HOOK(si32, "SI32", update, 3, build_kw_3arg)
529             DEFINE_KW_HOOK(si32, "SI32", swap, 3, build_kw_3arg)
530             DEFINE_KW_HOOK(si32, "SI32", cas, 4, build_kw_4arg)
531             DEFINE_KW_HOOK(si32, "SI32", persist, 2, build_kw_2arg)
532             DEFINE_KW_HOOK(si32, "SI32", set_ttl, 3, build_kw_3arg)
533              
534             /* SI (string -> int64, counters) */
535             DEFINE_KW_HOOK(si, "SI", put, 3, build_kw_3arg)
536             DEFINE_KW_HOOK(si, "SI", get, 2, build_kw_2arg)
537             DEFINE_KW_HOOK(si, "SI", remove, 2, build_kw_2arg)
538             DEFINE_KW_HOOK(si, "SI", exists, 2, build_kw_2arg)
539             DEFINE_KW_HOOK(si, "SI", incr, 2, build_kw_2arg)
540             DEFINE_KW_HOOK(si, "SI", decr, 2, build_kw_2arg)
541             DEFINE_KW_HOOK(si, "SI", incr_by, 3, build_kw_3arg)
542             DEFINE_KW_HOOK(si, "SI", size, 1, build_kw_1arg)
543             DEFINE_KW_HOOK(si, "SI", keys, 1, build_kw_1arg_list)
544             DEFINE_KW_HOOK(si, "SI", values, 1, build_kw_1arg_list)
545             DEFINE_KW_HOOK(si, "SI", items, 1, build_kw_1arg_list)
546             DEFINE_KW_HOOK(si, "SI", each, 1, build_kw_1arg_list)
547             DEFINE_KW_HOOK(si, "SI", iter_reset, 1, build_kw_1arg)
548             DEFINE_KW_HOOK(si, "SI", clear, 1, build_kw_1arg)
549             DEFINE_KW_HOOK(si, "SI", to_hash, 1, build_kw_1arg)
550             DEFINE_KW_HOOK(si, "SI", max_entries, 1, build_kw_1arg)
551             DEFINE_KW_HOOK(si, "SI", get_or_set, 3, build_kw_3arg)
552             DEFINE_KW_HOOK(si, "SI", put_ttl, 4, build_kw_4arg)
553             DEFINE_KW_HOOK(si, "SI", max_size, 1, build_kw_1arg)
554             DEFINE_KW_HOOK(si, "SI", ttl, 1, build_kw_1arg)
555             DEFINE_KW_HOOK(si, "SI", cursor, 1, build_kw_1arg)
556             DEFINE_KW_HOOK(si, "SI", cursor_next, 1, build_kw_1arg_list)
557             DEFINE_KW_HOOK(si, "SI", cursor_reset, 1, build_kw_1arg)
558             DEFINE_KW_HOOK(si, "SI", cursor_seek, 2, build_kw_2arg)
559             DEFINE_KW_HOOK(si, "SI", ttl_remaining, 2, build_kw_2arg)
560             DEFINE_KW_HOOK(si, "SI", capacity, 1, build_kw_1arg)
561             DEFINE_KW_HOOK(si, "SI", tombstones, 1, build_kw_1arg)
562             DEFINE_KW_HOOK(si, "SI", take, 2, build_kw_2arg)
563             DEFINE_KW_HOOK(si, "SI", pop, 1, build_kw_1arg)
564             DEFINE_KW_HOOK(si, "SI", shift, 1, build_kw_1arg)
565             DEFINE_KW_HOOK(si, "SI", drain, 2, build_kw_2arg)
566             DEFINE_KW_HOOK(si, "SI", flush_expired, 1, build_kw_1arg)
567             DEFINE_KW_HOOK(si, "SI", flush_expired_partial, 2, build_kw_2arg)
568             DEFINE_KW_HOOK(si, "SI", mmap_size, 1, build_kw_1arg)
569             DEFINE_KW_HOOK(si, "SI", touch, 2, build_kw_2arg)
570             DEFINE_KW_HOOK(si, "SI", reserve, 2, build_kw_2arg)
571             DEFINE_KW_HOOK(si, "SI", stat_evictions, 1, build_kw_1arg)
572             DEFINE_KW_HOOK(si, "SI", stat_expired, 1, build_kw_1arg)
573             DEFINE_KW_HOOK(si, "SI", stat_recoveries, 1, build_kw_1arg)
574             DEFINE_KW_HOOK(si, "SI", arena_used, 1, build_kw_1arg)
575             DEFINE_KW_HOOK(si, "SI", arena_cap, 1, build_kw_1arg)
576             DEFINE_KW_HOOK(si, "SI", add, 3, build_kw_3arg)
577             DEFINE_KW_HOOK(si, "SI", update, 3, build_kw_3arg)
578             DEFINE_KW_HOOK(si, "SI", swap, 3, build_kw_3arg)
579             DEFINE_KW_HOOK(si, "SI", cas, 4, build_kw_4arg)
580             DEFINE_KW_HOOK(si, "SI", persist, 2, build_kw_2arg)
581             DEFINE_KW_HOOK(si, "SI", set_ttl, 3, build_kw_3arg)
582              
583             /* SS (string -> string, no counters) */
584             DEFINE_KW_HOOK(ss, "SS", put, 3, build_kw_3arg)
585             DEFINE_KW_HOOK(ss, "SS", get, 2, build_kw_2arg)
586             DEFINE_KW_HOOK(ss, "SS", remove, 2, build_kw_2arg)
587             DEFINE_KW_HOOK(ss, "SS", exists, 2, build_kw_2arg)
588             DEFINE_KW_HOOK(ss, "SS", size, 1, build_kw_1arg)
589             DEFINE_KW_HOOK(ss, "SS", keys, 1, build_kw_1arg_list)
590             DEFINE_KW_HOOK(ss, "SS", values, 1, build_kw_1arg_list)
591             DEFINE_KW_HOOK(ss, "SS", items, 1, build_kw_1arg_list)
592             DEFINE_KW_HOOK(ss, "SS", each, 1, build_kw_1arg_list)
593             DEFINE_KW_HOOK(ss, "SS", iter_reset, 1, build_kw_1arg)
594             DEFINE_KW_HOOK(ss, "SS", clear, 1, build_kw_1arg)
595             DEFINE_KW_HOOK(ss, "SS", to_hash, 1, build_kw_1arg)
596             DEFINE_KW_HOOK(ss, "SS", max_entries, 1, build_kw_1arg)
597             DEFINE_KW_HOOK(ss, "SS", get_or_set, 3, build_kw_3arg)
598             DEFINE_KW_HOOK(ss, "SS", put_ttl, 4, build_kw_4arg)
599             DEFINE_KW_HOOK(ss, "SS", max_size, 1, build_kw_1arg)
600             DEFINE_KW_HOOK(ss, "SS", ttl, 1, build_kw_1arg)
601             DEFINE_KW_HOOK(ss, "SS", cursor, 1, build_kw_1arg)
602             DEFINE_KW_HOOK(ss, "SS", cursor_next, 1, build_kw_1arg_list)
603             DEFINE_KW_HOOK(ss, "SS", cursor_reset, 1, build_kw_1arg)
604             DEFINE_KW_HOOK(ss, "SS", cursor_seek, 2, build_kw_2arg)
605             DEFINE_KW_HOOK(ss, "SS", ttl_remaining, 2, build_kw_2arg)
606             DEFINE_KW_HOOK(ss, "SS", capacity, 1, build_kw_1arg)
607             DEFINE_KW_HOOK(ss, "SS", tombstones, 1, build_kw_1arg)
608             DEFINE_KW_HOOK(ss, "SS", take, 2, build_kw_2arg)
609             DEFINE_KW_HOOK(ss, "SS", pop, 1, build_kw_1arg)
610             DEFINE_KW_HOOK(ss, "SS", shift, 1, build_kw_1arg)
611             DEFINE_KW_HOOK(ss, "SS", drain, 2, build_kw_2arg)
612             DEFINE_KW_HOOK(ss, "SS", flush_expired, 1, build_kw_1arg)
613             DEFINE_KW_HOOK(ss, "SS", flush_expired_partial, 2, build_kw_2arg)
614             DEFINE_KW_HOOK(ss, "SS", mmap_size, 1, build_kw_1arg)
615             DEFINE_KW_HOOK(ss, "SS", touch, 2, build_kw_2arg)
616             DEFINE_KW_HOOK(ss, "SS", reserve, 2, build_kw_2arg)
617             DEFINE_KW_HOOK(ss, "SS", stat_evictions, 1, build_kw_1arg)
618             DEFINE_KW_HOOK(ss, "SS", stat_expired, 1, build_kw_1arg)
619             DEFINE_KW_HOOK(ss, "SS", stat_recoveries, 1, build_kw_1arg)
620             DEFINE_KW_HOOK(ss, "SS", arena_used, 1, build_kw_1arg)
621             DEFINE_KW_HOOK(ss, "SS", arena_cap, 1, build_kw_1arg)
622             DEFINE_KW_HOOK(ss, "SS", add, 3, build_kw_3arg)
623             DEFINE_KW_HOOK(ss, "SS", update, 3, build_kw_3arg)
624             DEFINE_KW_HOOK(ss, "SS", swap, 3, build_kw_3arg)
625             DEFINE_KW_HOOK(ss, "SS", persist, 2, build_kw_2arg)
626             DEFINE_KW_HOOK(ss, "SS", set_ttl, 3, build_kw_3arg)
627              
628             /* ---- Register keyword macro ---- */
629              
630             #define REGISTER_KW(variant, kw, func_name) \
631             register_xs_parse_keyword("shm_" #variant "_" #kw, \
632             &hooks_shm_##variant##_##kw, (void*)func_name)
633              
634              
635             /* ============================================================
636             * MODULE/PACKAGE sections
637             * ============================================================ */
638              
639              
640             MODULE = Data::HashMap::Shared PACKAGE = Data::HashMap::Shared::I16
641             PROTOTYPES: DISABLE
642              
643             BOOT:
644 15           boot_xs_parse_keyword(0.40);
645             /* I16 */
646 15           REGISTER_KW(i16, put, "Data::HashMap::Shared::I16::put");
647 15           REGISTER_KW(i16, get, "Data::HashMap::Shared::I16::get");
648 15           REGISTER_KW(i16, remove, "Data::HashMap::Shared::I16::remove");
649 15           REGISTER_KW(i16, exists, "Data::HashMap::Shared::I16::exists");
650 15           REGISTER_KW(i16, incr, "Data::HashMap::Shared::I16::incr");
651 15           REGISTER_KW(i16, decr, "Data::HashMap::Shared::I16::decr");
652 15           REGISTER_KW(i16, incr_by, "Data::HashMap::Shared::I16::incr_by");
653 15           REGISTER_KW(i16, size, "Data::HashMap::Shared::I16::size");
654 15           REGISTER_KW(i16, keys, "Data::HashMap::Shared::I16::keys");
655 15           REGISTER_KW(i16, values, "Data::HashMap::Shared::I16::values");
656 15           REGISTER_KW(i16, items, "Data::HashMap::Shared::I16::items");
657 15           REGISTER_KW(i16, each, "Data::HashMap::Shared::I16::each");
658 15           REGISTER_KW(i16, iter_reset, "Data::HashMap::Shared::I16::iter_reset");
659 15           REGISTER_KW(i16, clear, "Data::HashMap::Shared::I16::clear");
660 15           REGISTER_KW(i16, to_hash, "Data::HashMap::Shared::I16::to_hash");
661 15           REGISTER_KW(i16, max_entries, "Data::HashMap::Shared::I16::max_entries");
662 15           REGISTER_KW(i16, get_or_set, "Data::HashMap::Shared::I16::get_or_set");
663 15           REGISTER_KW(i16, put_ttl, "Data::HashMap::Shared::I16::put_ttl");
664 15           REGISTER_KW(i16, max_size, "Data::HashMap::Shared::I16::max_size");
665 15           REGISTER_KW(i16, ttl, "Data::HashMap::Shared::I16::ttl");
666 15           REGISTER_KW(i16, cursor, "Data::HashMap::Shared::I16::cursor");
667 15           REGISTER_KW(i16, cursor_next, "Data::HashMap::Shared::I16::Cursor::next");
668 15           REGISTER_KW(i16, cursor_reset, "Data::HashMap::Shared::I16::Cursor::reset");
669 15           REGISTER_KW(i16, cursor_seek, "Data::HashMap::Shared::I16::Cursor::seek");
670 15           REGISTER_KW(i16, ttl_remaining, "Data::HashMap::Shared::I16::ttl_remaining");
671 15           REGISTER_KW(i16, capacity, "Data::HashMap::Shared::I16::capacity");
672 15           REGISTER_KW(i16, tombstones, "Data::HashMap::Shared::I16::tombstones");
673 15           REGISTER_KW(i16, take, "Data::HashMap::Shared::I16::take");
674 15           REGISTER_KW(i16, pop, "Data::HashMap::Shared::I16::pop");
675 15           REGISTER_KW(i16, shift, "Data::HashMap::Shared::I16::shift");
676 15           REGISTER_KW(i16, drain, "Data::HashMap::Shared::I16::drain");
677 15           REGISTER_KW(i16, flush_expired, "Data::HashMap::Shared::I16::flush_expired");
678 15           REGISTER_KW(i16, flush_expired_partial, "Data::HashMap::Shared::I16::flush_expired_partial");
679 15           REGISTER_KW(i16, mmap_size, "Data::HashMap::Shared::I16::mmap_size");
680 15           REGISTER_KW(i16, touch, "Data::HashMap::Shared::I16::touch");
681 15           REGISTER_KW(i16, reserve, "Data::HashMap::Shared::I16::reserve");
682 15           REGISTER_KW(i16, stat_evictions, "Data::HashMap::Shared::I16::stat_evictions");
683 15           REGISTER_KW(i16, stat_expired, "Data::HashMap::Shared::I16::stat_expired");
684 15           REGISTER_KW(i16, stat_recoveries, "Data::HashMap::Shared::I16::stat_recoveries");
685 15           REGISTER_KW(i16, arena_used, "Data::HashMap::Shared::I16::arena_used");
686 15           REGISTER_KW(i16, arena_cap, "Data::HashMap::Shared::I16::arena_cap");
687 15           REGISTER_KW(i16, add, "Data::HashMap::Shared::I16::add");
688 15           REGISTER_KW(i16, update, "Data::HashMap::Shared::I16::update");
689 15           REGISTER_KW(i16, swap, "Data::HashMap::Shared::I16::swap");
690 15           REGISTER_KW(i16, cas, "Data::HashMap::Shared::I16::cas");
691 15           REGISTER_KW(i16, persist, "Data::HashMap::Shared::I16::persist");
692 15           REGISTER_KW(i16, set_ttl, "Data::HashMap::Shared::I16::set_ttl");
693 15           REGISTER_KW(i32, put, "Data::HashMap::Shared::I32::put");
694 15           REGISTER_KW(i32, get, "Data::HashMap::Shared::I32::get");
695 15           REGISTER_KW(i32, remove, "Data::HashMap::Shared::I32::remove");
696 15           REGISTER_KW(i32, exists, "Data::HashMap::Shared::I32::exists");
697 15           REGISTER_KW(i32, incr, "Data::HashMap::Shared::I32::incr");
698 15           REGISTER_KW(i32, decr, "Data::HashMap::Shared::I32::decr");
699 15           REGISTER_KW(i32, incr_by, "Data::HashMap::Shared::I32::incr_by");
700 15           REGISTER_KW(i32, size, "Data::HashMap::Shared::I32::size");
701 15           REGISTER_KW(i32, keys, "Data::HashMap::Shared::I32::keys");
702 15           REGISTER_KW(i32, values, "Data::HashMap::Shared::I32::values");
703 15           REGISTER_KW(i32, items, "Data::HashMap::Shared::I32::items");
704 15           REGISTER_KW(i32, each, "Data::HashMap::Shared::I32::each");
705 15           REGISTER_KW(i32, iter_reset, "Data::HashMap::Shared::I32::iter_reset");
706 15           REGISTER_KW(i32, clear, "Data::HashMap::Shared::I32::clear");
707 15           REGISTER_KW(i32, to_hash, "Data::HashMap::Shared::I32::to_hash");
708 15           REGISTER_KW(i32, max_entries, "Data::HashMap::Shared::I32::max_entries");
709 15           REGISTER_KW(i32, get_or_set, "Data::HashMap::Shared::I32::get_or_set");
710 15           REGISTER_KW(i32, put_ttl, "Data::HashMap::Shared::I32::put_ttl");
711 15           REGISTER_KW(i32, max_size, "Data::HashMap::Shared::I32::max_size");
712 15           REGISTER_KW(i32, ttl, "Data::HashMap::Shared::I32::ttl");
713 15           REGISTER_KW(i32, cursor, "Data::HashMap::Shared::I32::cursor");
714 15           REGISTER_KW(i32, cursor_next, "Data::HashMap::Shared::I32::Cursor::next");
715 15           REGISTER_KW(i32, cursor_reset, "Data::HashMap::Shared::I32::Cursor::reset");
716 15           REGISTER_KW(i32, cursor_seek, "Data::HashMap::Shared::I32::Cursor::seek");
717 15           REGISTER_KW(i32, ttl_remaining, "Data::HashMap::Shared::I32::ttl_remaining");
718 15           REGISTER_KW(i32, capacity, "Data::HashMap::Shared::I32::capacity");
719 15           REGISTER_KW(i32, tombstones, "Data::HashMap::Shared::I32::tombstones");
720 15           REGISTER_KW(i32, take, "Data::HashMap::Shared::I32::take");
721 15           REGISTER_KW(i32, pop, "Data::HashMap::Shared::I32::pop");
722 15           REGISTER_KW(i32, shift, "Data::HashMap::Shared::I32::shift");
723 15           REGISTER_KW(i32, drain, "Data::HashMap::Shared::I32::drain");
724 15           REGISTER_KW(i32, flush_expired, "Data::HashMap::Shared::I32::flush_expired");
725 15           REGISTER_KW(i32, flush_expired_partial, "Data::HashMap::Shared::I32::flush_expired_partial");
726 15           REGISTER_KW(i32, mmap_size, "Data::HashMap::Shared::I32::mmap_size");
727 15           REGISTER_KW(i32, touch, "Data::HashMap::Shared::I32::touch");
728 15           REGISTER_KW(i32, reserve, "Data::HashMap::Shared::I32::reserve");
729 15           REGISTER_KW(i32, stat_evictions, "Data::HashMap::Shared::I32::stat_evictions");
730 15           REGISTER_KW(i32, stat_expired, "Data::HashMap::Shared::I32::stat_expired");
731 15           REGISTER_KW(i32, stat_recoveries, "Data::HashMap::Shared::I32::stat_recoveries");
732 15           REGISTER_KW(i32, arena_used, "Data::HashMap::Shared::I32::arena_used");
733 15           REGISTER_KW(i32, arena_cap, "Data::HashMap::Shared::I32::arena_cap");
734 15           REGISTER_KW(i32, add, "Data::HashMap::Shared::I32::add");
735 15           REGISTER_KW(i32, update, "Data::HashMap::Shared::I32::update");
736 15           REGISTER_KW(i32, swap, "Data::HashMap::Shared::I32::swap");
737 15           REGISTER_KW(i32, cas, "Data::HashMap::Shared::I32::cas");
738 15           REGISTER_KW(i32, persist, "Data::HashMap::Shared::I32::persist");
739 15           REGISTER_KW(i32, set_ttl, "Data::HashMap::Shared::I32::set_ttl");
740 15           REGISTER_KW(ii, put, "Data::HashMap::Shared::II::put");
741 15           REGISTER_KW(ii, get, "Data::HashMap::Shared::II::get");
742 15           REGISTER_KW(ii, remove, "Data::HashMap::Shared::II::remove");
743 15           REGISTER_KW(ii, exists, "Data::HashMap::Shared::II::exists");
744 15           REGISTER_KW(ii, incr, "Data::HashMap::Shared::II::incr");
745 15           REGISTER_KW(ii, decr, "Data::HashMap::Shared::II::decr");
746 15           REGISTER_KW(ii, incr_by, "Data::HashMap::Shared::II::incr_by");
747 15           REGISTER_KW(ii, size, "Data::HashMap::Shared::II::size");
748 15           REGISTER_KW(ii, keys, "Data::HashMap::Shared::II::keys");
749 15           REGISTER_KW(ii, values, "Data::HashMap::Shared::II::values");
750 15           REGISTER_KW(ii, items, "Data::HashMap::Shared::II::items");
751 15           REGISTER_KW(ii, each, "Data::HashMap::Shared::II::each");
752 15           REGISTER_KW(ii, iter_reset, "Data::HashMap::Shared::II::iter_reset");
753 15           REGISTER_KW(ii, clear, "Data::HashMap::Shared::II::clear");
754 15           REGISTER_KW(ii, to_hash, "Data::HashMap::Shared::II::to_hash");
755 15           REGISTER_KW(ii, max_entries, "Data::HashMap::Shared::II::max_entries");
756 15           REGISTER_KW(ii, get_or_set, "Data::HashMap::Shared::II::get_or_set");
757 15           REGISTER_KW(ii, put_ttl, "Data::HashMap::Shared::II::put_ttl");
758 15           REGISTER_KW(ii, max_size, "Data::HashMap::Shared::II::max_size");
759 15           REGISTER_KW(ii, ttl, "Data::HashMap::Shared::II::ttl");
760 15           REGISTER_KW(ii, cursor, "Data::HashMap::Shared::II::cursor");
761 15           REGISTER_KW(ii, cursor_next, "Data::HashMap::Shared::II::Cursor::next");
762 15           REGISTER_KW(ii, cursor_reset, "Data::HashMap::Shared::II::Cursor::reset");
763 15           REGISTER_KW(ii, cursor_seek, "Data::HashMap::Shared::II::Cursor::seek");
764 15           REGISTER_KW(ii, ttl_remaining, "Data::HashMap::Shared::II::ttl_remaining");
765 15           REGISTER_KW(ii, capacity, "Data::HashMap::Shared::II::capacity");
766 15           REGISTER_KW(ii, tombstones, "Data::HashMap::Shared::II::tombstones");
767 15           REGISTER_KW(ii, take, "Data::HashMap::Shared::II::take");
768 15           REGISTER_KW(ii, pop, "Data::HashMap::Shared::II::pop");
769 15           REGISTER_KW(ii, shift, "Data::HashMap::Shared::II::shift");
770 15           REGISTER_KW(ii, drain, "Data::HashMap::Shared::II::drain");
771 15           REGISTER_KW(ii, flush_expired, "Data::HashMap::Shared::II::flush_expired");
772 15           REGISTER_KW(ii, flush_expired_partial, "Data::HashMap::Shared::II::flush_expired_partial");
773 15           REGISTER_KW(ii, mmap_size, "Data::HashMap::Shared::II::mmap_size");
774 15           REGISTER_KW(ii, touch, "Data::HashMap::Shared::II::touch");
775 15           REGISTER_KW(ii, reserve, "Data::HashMap::Shared::II::reserve");
776 15           REGISTER_KW(ii, stat_evictions, "Data::HashMap::Shared::II::stat_evictions");
777 15           REGISTER_KW(ii, stat_expired, "Data::HashMap::Shared::II::stat_expired");
778 15           REGISTER_KW(ii, stat_recoveries, "Data::HashMap::Shared::II::stat_recoveries");
779 15           REGISTER_KW(ii, arena_used, "Data::HashMap::Shared::II::arena_used");
780 15           REGISTER_KW(ii, arena_cap, "Data::HashMap::Shared::II::arena_cap");
781 15           REGISTER_KW(ii, add, "Data::HashMap::Shared::II::add");
782 15           REGISTER_KW(ii, update, "Data::HashMap::Shared::II::update");
783 15           REGISTER_KW(ii, swap, "Data::HashMap::Shared::II::swap");
784 15           REGISTER_KW(ii, cas, "Data::HashMap::Shared::II::cas");
785 15           REGISTER_KW(ii, persist, "Data::HashMap::Shared::II::persist");
786 15           REGISTER_KW(ii, set_ttl, "Data::HashMap::Shared::II::set_ttl");
787 15           REGISTER_KW(i16s, put, "Data::HashMap::Shared::I16S::put");
788 15           REGISTER_KW(i16s, get, "Data::HashMap::Shared::I16S::get");
789 15           REGISTER_KW(i16s, remove, "Data::HashMap::Shared::I16S::remove");
790 15           REGISTER_KW(i16s, exists, "Data::HashMap::Shared::I16S::exists");
791 15           REGISTER_KW(i16s, size, "Data::HashMap::Shared::I16S::size");
792 15           REGISTER_KW(i16s, keys, "Data::HashMap::Shared::I16S::keys");
793 15           REGISTER_KW(i16s, values, "Data::HashMap::Shared::I16S::values");
794 15           REGISTER_KW(i16s, items, "Data::HashMap::Shared::I16S::items");
795 15           REGISTER_KW(i16s, each, "Data::HashMap::Shared::I16S::each");
796 15           REGISTER_KW(i16s, iter_reset, "Data::HashMap::Shared::I16S::iter_reset");
797 15           REGISTER_KW(i16s, clear, "Data::HashMap::Shared::I16S::clear");
798 15           REGISTER_KW(i16s, to_hash, "Data::HashMap::Shared::I16S::to_hash");
799 15           REGISTER_KW(i16s, max_entries, "Data::HashMap::Shared::I16S::max_entries");
800 15           REGISTER_KW(i16s, get_or_set, "Data::HashMap::Shared::I16S::get_or_set");
801 15           REGISTER_KW(i16s, put_ttl, "Data::HashMap::Shared::I16S::put_ttl");
802 15           REGISTER_KW(i16s, max_size, "Data::HashMap::Shared::I16S::max_size");
803 15           REGISTER_KW(i16s, ttl, "Data::HashMap::Shared::I16S::ttl");
804 15           REGISTER_KW(i16s, cursor, "Data::HashMap::Shared::I16S::cursor");
805 15           REGISTER_KW(i16s, cursor_next, "Data::HashMap::Shared::I16S::Cursor::next");
806 15           REGISTER_KW(i16s, cursor_reset, "Data::HashMap::Shared::I16S::Cursor::reset");
807 15           REGISTER_KW(i16s, cursor_seek, "Data::HashMap::Shared::I16S::Cursor::seek");
808 15           REGISTER_KW(i16s, ttl_remaining, "Data::HashMap::Shared::I16S::ttl_remaining");
809 15           REGISTER_KW(i16s, capacity, "Data::HashMap::Shared::I16S::capacity");
810 15           REGISTER_KW(i16s, tombstones, "Data::HashMap::Shared::I16S::tombstones");
811 15           REGISTER_KW(i16s, take, "Data::HashMap::Shared::I16S::take");
812 15           REGISTER_KW(i16s, pop, "Data::HashMap::Shared::I16S::pop");
813 15           REGISTER_KW(i16s, shift, "Data::HashMap::Shared::I16S::shift");
814 15           REGISTER_KW(i16s, drain, "Data::HashMap::Shared::I16S::drain");
815 15           REGISTER_KW(i16s, flush_expired, "Data::HashMap::Shared::I16S::flush_expired");
816 15           REGISTER_KW(i16s, flush_expired_partial, "Data::HashMap::Shared::I16S::flush_expired_partial");
817 15           REGISTER_KW(i16s, mmap_size, "Data::HashMap::Shared::I16S::mmap_size");
818 15           REGISTER_KW(i16s, touch, "Data::HashMap::Shared::I16S::touch");
819 15           REGISTER_KW(i16s, reserve, "Data::HashMap::Shared::I16S::reserve");
820 15           REGISTER_KW(i16s, stat_evictions, "Data::HashMap::Shared::I16S::stat_evictions");
821 15           REGISTER_KW(i16s, stat_expired, "Data::HashMap::Shared::I16S::stat_expired");
822 15           REGISTER_KW(i16s, stat_recoveries, "Data::HashMap::Shared::I16S::stat_recoveries");
823 15           REGISTER_KW(i16s, arena_used, "Data::HashMap::Shared::I16S::arena_used");
824 15           REGISTER_KW(i16s, arena_cap, "Data::HashMap::Shared::I16S::arena_cap");
825 15           REGISTER_KW(i16s, add, "Data::HashMap::Shared::I16S::add");
826 15           REGISTER_KW(i16s, update, "Data::HashMap::Shared::I16S::update");
827 15           REGISTER_KW(i16s, swap, "Data::HashMap::Shared::I16S::swap");
828 15           REGISTER_KW(i16s, persist, "Data::HashMap::Shared::I16S::persist");
829 15           REGISTER_KW(i16s, set_ttl, "Data::HashMap::Shared::I16S::set_ttl");
830 15           REGISTER_KW(i32s, put, "Data::HashMap::Shared::I32S::put");
831 15           REGISTER_KW(i32s, get, "Data::HashMap::Shared::I32S::get");
832 15           REGISTER_KW(i32s, remove, "Data::HashMap::Shared::I32S::remove");
833 15           REGISTER_KW(i32s, exists, "Data::HashMap::Shared::I32S::exists");
834 15           REGISTER_KW(i32s, size, "Data::HashMap::Shared::I32S::size");
835 15           REGISTER_KW(i32s, keys, "Data::HashMap::Shared::I32S::keys");
836 15           REGISTER_KW(i32s, values, "Data::HashMap::Shared::I32S::values");
837 15           REGISTER_KW(i32s, items, "Data::HashMap::Shared::I32S::items");
838 15           REGISTER_KW(i32s, each, "Data::HashMap::Shared::I32S::each");
839 15           REGISTER_KW(i32s, iter_reset, "Data::HashMap::Shared::I32S::iter_reset");
840 15           REGISTER_KW(i32s, clear, "Data::HashMap::Shared::I32S::clear");
841 15           REGISTER_KW(i32s, to_hash, "Data::HashMap::Shared::I32S::to_hash");
842 15           REGISTER_KW(i32s, max_entries, "Data::HashMap::Shared::I32S::max_entries");
843 15           REGISTER_KW(i32s, get_or_set, "Data::HashMap::Shared::I32S::get_or_set");
844 15           REGISTER_KW(i32s, put_ttl, "Data::HashMap::Shared::I32S::put_ttl");
845 15           REGISTER_KW(i32s, max_size, "Data::HashMap::Shared::I32S::max_size");
846 15           REGISTER_KW(i32s, ttl, "Data::HashMap::Shared::I32S::ttl");
847 15           REGISTER_KW(i32s, cursor, "Data::HashMap::Shared::I32S::cursor");
848 15           REGISTER_KW(i32s, cursor_next, "Data::HashMap::Shared::I32S::Cursor::next");
849 15           REGISTER_KW(i32s, cursor_reset, "Data::HashMap::Shared::I32S::Cursor::reset");
850 15           REGISTER_KW(i32s, cursor_seek, "Data::HashMap::Shared::I32S::Cursor::seek");
851 15           REGISTER_KW(i32s, ttl_remaining, "Data::HashMap::Shared::I32S::ttl_remaining");
852 15           REGISTER_KW(i32s, capacity, "Data::HashMap::Shared::I32S::capacity");
853 15           REGISTER_KW(i32s, tombstones, "Data::HashMap::Shared::I32S::tombstones");
854 15           REGISTER_KW(i32s, take, "Data::HashMap::Shared::I32S::take");
855 15           REGISTER_KW(i32s, pop, "Data::HashMap::Shared::I32S::pop");
856 15           REGISTER_KW(i32s, shift, "Data::HashMap::Shared::I32S::shift");
857 15           REGISTER_KW(i32s, drain, "Data::HashMap::Shared::I32S::drain");
858 15           REGISTER_KW(i32s, flush_expired, "Data::HashMap::Shared::I32S::flush_expired");
859 15           REGISTER_KW(i32s, flush_expired_partial, "Data::HashMap::Shared::I32S::flush_expired_partial");
860 15           REGISTER_KW(i32s, mmap_size, "Data::HashMap::Shared::I32S::mmap_size");
861 15           REGISTER_KW(i32s, touch, "Data::HashMap::Shared::I32S::touch");
862 15           REGISTER_KW(i32s, reserve, "Data::HashMap::Shared::I32S::reserve");
863 15           REGISTER_KW(i32s, stat_evictions, "Data::HashMap::Shared::I32S::stat_evictions");
864 15           REGISTER_KW(i32s, stat_expired, "Data::HashMap::Shared::I32S::stat_expired");
865 15           REGISTER_KW(i32s, stat_recoveries, "Data::HashMap::Shared::I32S::stat_recoveries");
866 15           REGISTER_KW(i32s, arena_used, "Data::HashMap::Shared::I32S::arena_used");
867 15           REGISTER_KW(i32s, arena_cap, "Data::HashMap::Shared::I32S::arena_cap");
868 15           REGISTER_KW(i32s, add, "Data::HashMap::Shared::I32S::add");
869 15           REGISTER_KW(i32s, update, "Data::HashMap::Shared::I32S::update");
870 15           REGISTER_KW(i32s, swap, "Data::HashMap::Shared::I32S::swap");
871 15           REGISTER_KW(i32s, persist, "Data::HashMap::Shared::I32S::persist");
872 15           REGISTER_KW(i32s, set_ttl, "Data::HashMap::Shared::I32S::set_ttl");
873 15           REGISTER_KW(is, put, "Data::HashMap::Shared::IS::put");
874 15           REGISTER_KW(is, get, "Data::HashMap::Shared::IS::get");
875 15           REGISTER_KW(is, remove, "Data::HashMap::Shared::IS::remove");
876 15           REGISTER_KW(is, exists, "Data::HashMap::Shared::IS::exists");
877 15           REGISTER_KW(is, size, "Data::HashMap::Shared::IS::size");
878 15           REGISTER_KW(is, keys, "Data::HashMap::Shared::IS::keys");
879 15           REGISTER_KW(is, values, "Data::HashMap::Shared::IS::values");
880 15           REGISTER_KW(is, items, "Data::HashMap::Shared::IS::items");
881 15           REGISTER_KW(is, each, "Data::HashMap::Shared::IS::each");
882 15           REGISTER_KW(is, iter_reset, "Data::HashMap::Shared::IS::iter_reset");
883 15           REGISTER_KW(is, clear, "Data::HashMap::Shared::IS::clear");
884 15           REGISTER_KW(is, to_hash, "Data::HashMap::Shared::IS::to_hash");
885 15           REGISTER_KW(is, max_entries, "Data::HashMap::Shared::IS::max_entries");
886 15           REGISTER_KW(is, get_or_set, "Data::HashMap::Shared::IS::get_or_set");
887 15           REGISTER_KW(is, put_ttl, "Data::HashMap::Shared::IS::put_ttl");
888 15           REGISTER_KW(is, max_size, "Data::HashMap::Shared::IS::max_size");
889 15           REGISTER_KW(is, ttl, "Data::HashMap::Shared::IS::ttl");
890 15           REGISTER_KW(is, cursor, "Data::HashMap::Shared::IS::cursor");
891 15           REGISTER_KW(is, cursor_next, "Data::HashMap::Shared::IS::Cursor::next");
892 15           REGISTER_KW(is, cursor_reset, "Data::HashMap::Shared::IS::Cursor::reset");
893 15           REGISTER_KW(is, cursor_seek, "Data::HashMap::Shared::IS::Cursor::seek");
894 15           REGISTER_KW(is, ttl_remaining, "Data::HashMap::Shared::IS::ttl_remaining");
895 15           REGISTER_KW(is, capacity, "Data::HashMap::Shared::IS::capacity");
896 15           REGISTER_KW(is, tombstones, "Data::HashMap::Shared::IS::tombstones");
897 15           REGISTER_KW(is, take, "Data::HashMap::Shared::IS::take");
898 15           REGISTER_KW(is, pop, "Data::HashMap::Shared::IS::pop");
899 15           REGISTER_KW(is, shift, "Data::HashMap::Shared::IS::shift");
900 15           REGISTER_KW(is, drain, "Data::HashMap::Shared::IS::drain");
901 15           REGISTER_KW(is, flush_expired, "Data::HashMap::Shared::IS::flush_expired");
902 15           REGISTER_KW(is, flush_expired_partial, "Data::HashMap::Shared::IS::flush_expired_partial");
903 15           REGISTER_KW(is, mmap_size, "Data::HashMap::Shared::IS::mmap_size");
904 15           REGISTER_KW(is, touch, "Data::HashMap::Shared::IS::touch");
905 15           REGISTER_KW(is, reserve, "Data::HashMap::Shared::IS::reserve");
906 15           REGISTER_KW(is, stat_evictions, "Data::HashMap::Shared::IS::stat_evictions");
907 15           REGISTER_KW(is, stat_expired, "Data::HashMap::Shared::IS::stat_expired");
908 15           REGISTER_KW(is, stat_recoveries, "Data::HashMap::Shared::IS::stat_recoveries");
909 15           REGISTER_KW(is, arena_used, "Data::HashMap::Shared::IS::arena_used");
910 15           REGISTER_KW(is, arena_cap, "Data::HashMap::Shared::IS::arena_cap");
911 15           REGISTER_KW(is, add, "Data::HashMap::Shared::IS::add");
912 15           REGISTER_KW(is, update, "Data::HashMap::Shared::IS::update");
913 15           REGISTER_KW(is, swap, "Data::HashMap::Shared::IS::swap");
914 15           REGISTER_KW(is, persist, "Data::HashMap::Shared::IS::persist");
915 15           REGISTER_KW(is, set_ttl, "Data::HashMap::Shared::IS::set_ttl");
916 15           REGISTER_KW(si16, put, "Data::HashMap::Shared::SI16::put");
917 15           REGISTER_KW(si16, get, "Data::HashMap::Shared::SI16::get");
918 15           REGISTER_KW(si16, remove, "Data::HashMap::Shared::SI16::remove");
919 15           REGISTER_KW(si16, exists, "Data::HashMap::Shared::SI16::exists");
920 15           REGISTER_KW(si16, incr, "Data::HashMap::Shared::SI16::incr");
921 15           REGISTER_KW(si16, decr, "Data::HashMap::Shared::SI16::decr");
922 15           REGISTER_KW(si16, incr_by, "Data::HashMap::Shared::SI16::incr_by");
923 15           REGISTER_KW(si16, size, "Data::HashMap::Shared::SI16::size");
924 15           REGISTER_KW(si16, keys, "Data::HashMap::Shared::SI16::keys");
925 15           REGISTER_KW(si16, values, "Data::HashMap::Shared::SI16::values");
926 15           REGISTER_KW(si16, items, "Data::HashMap::Shared::SI16::items");
927 15           REGISTER_KW(si16, each, "Data::HashMap::Shared::SI16::each");
928 15           REGISTER_KW(si16, iter_reset, "Data::HashMap::Shared::SI16::iter_reset");
929 15           REGISTER_KW(si16, clear, "Data::HashMap::Shared::SI16::clear");
930 15           REGISTER_KW(si16, to_hash, "Data::HashMap::Shared::SI16::to_hash");
931 15           REGISTER_KW(si16, max_entries, "Data::HashMap::Shared::SI16::max_entries");
932 15           REGISTER_KW(si16, get_or_set, "Data::HashMap::Shared::SI16::get_or_set");
933 15           REGISTER_KW(si16, put_ttl, "Data::HashMap::Shared::SI16::put_ttl");
934 15           REGISTER_KW(si16, max_size, "Data::HashMap::Shared::SI16::max_size");
935 15           REGISTER_KW(si16, ttl, "Data::HashMap::Shared::SI16::ttl");
936 15           REGISTER_KW(si16, cursor, "Data::HashMap::Shared::SI16::cursor");
937 15           REGISTER_KW(si16, cursor_next, "Data::HashMap::Shared::SI16::Cursor::next");
938 15           REGISTER_KW(si16, cursor_reset, "Data::HashMap::Shared::SI16::Cursor::reset");
939 15           REGISTER_KW(si16, cursor_seek, "Data::HashMap::Shared::SI16::Cursor::seek");
940 15           REGISTER_KW(si16, ttl_remaining, "Data::HashMap::Shared::SI16::ttl_remaining");
941 15           REGISTER_KW(si16, capacity, "Data::HashMap::Shared::SI16::capacity");
942 15           REGISTER_KW(si16, tombstones, "Data::HashMap::Shared::SI16::tombstones");
943 15           REGISTER_KW(si16, take, "Data::HashMap::Shared::SI16::take");
944 15           REGISTER_KW(si16, pop, "Data::HashMap::Shared::SI16::pop");
945 15           REGISTER_KW(si16, shift, "Data::HashMap::Shared::SI16::shift");
946 15           REGISTER_KW(si16, drain, "Data::HashMap::Shared::SI16::drain");
947 15           REGISTER_KW(si16, flush_expired, "Data::HashMap::Shared::SI16::flush_expired");
948 15           REGISTER_KW(si16, flush_expired_partial, "Data::HashMap::Shared::SI16::flush_expired_partial");
949 15           REGISTER_KW(si16, mmap_size, "Data::HashMap::Shared::SI16::mmap_size");
950 15           REGISTER_KW(si16, touch, "Data::HashMap::Shared::SI16::touch");
951 15           REGISTER_KW(si16, reserve, "Data::HashMap::Shared::SI16::reserve");
952 15           REGISTER_KW(si16, stat_evictions, "Data::HashMap::Shared::SI16::stat_evictions");
953 15           REGISTER_KW(si16, stat_expired, "Data::HashMap::Shared::SI16::stat_expired");
954 15           REGISTER_KW(si16, stat_recoveries, "Data::HashMap::Shared::SI16::stat_recoveries");
955 15           REGISTER_KW(si16, arena_used, "Data::HashMap::Shared::SI16::arena_used");
956 15           REGISTER_KW(si16, arena_cap, "Data::HashMap::Shared::SI16::arena_cap");
957 15           REGISTER_KW(si16, add, "Data::HashMap::Shared::SI16::add");
958 15           REGISTER_KW(si16, update, "Data::HashMap::Shared::SI16::update");
959 15           REGISTER_KW(si16, swap, "Data::HashMap::Shared::SI16::swap");
960 15           REGISTER_KW(si16, cas, "Data::HashMap::Shared::SI16::cas");
961 15           REGISTER_KW(si16, persist, "Data::HashMap::Shared::SI16::persist");
962 15           REGISTER_KW(si16, set_ttl, "Data::HashMap::Shared::SI16::set_ttl");
963 15           REGISTER_KW(si32, put, "Data::HashMap::Shared::SI32::put");
964 15           REGISTER_KW(si32, get, "Data::HashMap::Shared::SI32::get");
965 15           REGISTER_KW(si32, remove, "Data::HashMap::Shared::SI32::remove");
966 15           REGISTER_KW(si32, exists, "Data::HashMap::Shared::SI32::exists");
967 15           REGISTER_KW(si32, incr, "Data::HashMap::Shared::SI32::incr");
968 15           REGISTER_KW(si32, decr, "Data::HashMap::Shared::SI32::decr");
969 15           REGISTER_KW(si32, incr_by, "Data::HashMap::Shared::SI32::incr_by");
970 15           REGISTER_KW(si32, size, "Data::HashMap::Shared::SI32::size");
971 15           REGISTER_KW(si32, keys, "Data::HashMap::Shared::SI32::keys");
972 15           REGISTER_KW(si32, values, "Data::HashMap::Shared::SI32::values");
973 15           REGISTER_KW(si32, items, "Data::HashMap::Shared::SI32::items");
974 15           REGISTER_KW(si32, each, "Data::HashMap::Shared::SI32::each");
975 15           REGISTER_KW(si32, iter_reset, "Data::HashMap::Shared::SI32::iter_reset");
976 15           REGISTER_KW(si32, clear, "Data::HashMap::Shared::SI32::clear");
977 15           REGISTER_KW(si32, to_hash, "Data::HashMap::Shared::SI32::to_hash");
978 15           REGISTER_KW(si32, max_entries, "Data::HashMap::Shared::SI32::max_entries");
979 15           REGISTER_KW(si32, get_or_set, "Data::HashMap::Shared::SI32::get_or_set");
980 15           REGISTER_KW(si32, put_ttl, "Data::HashMap::Shared::SI32::put_ttl");
981 15           REGISTER_KW(si32, max_size, "Data::HashMap::Shared::SI32::max_size");
982 15           REGISTER_KW(si32, ttl, "Data::HashMap::Shared::SI32::ttl");
983 15           REGISTER_KW(si32, cursor, "Data::HashMap::Shared::SI32::cursor");
984 15           REGISTER_KW(si32, cursor_next, "Data::HashMap::Shared::SI32::Cursor::next");
985 15           REGISTER_KW(si32, cursor_reset, "Data::HashMap::Shared::SI32::Cursor::reset");
986 15           REGISTER_KW(si32, cursor_seek, "Data::HashMap::Shared::SI32::Cursor::seek");
987 15           REGISTER_KW(si32, ttl_remaining, "Data::HashMap::Shared::SI32::ttl_remaining");
988 15           REGISTER_KW(si32, capacity, "Data::HashMap::Shared::SI32::capacity");
989 15           REGISTER_KW(si32, tombstones, "Data::HashMap::Shared::SI32::tombstones");
990 15           REGISTER_KW(si32, take, "Data::HashMap::Shared::SI32::take");
991 15           REGISTER_KW(si32, pop, "Data::HashMap::Shared::SI32::pop");
992 15           REGISTER_KW(si32, shift, "Data::HashMap::Shared::SI32::shift");
993 15           REGISTER_KW(si32, drain, "Data::HashMap::Shared::SI32::drain");
994 15           REGISTER_KW(si32, flush_expired, "Data::HashMap::Shared::SI32::flush_expired");
995 15           REGISTER_KW(si32, flush_expired_partial, "Data::HashMap::Shared::SI32::flush_expired_partial");
996 15           REGISTER_KW(si32, mmap_size, "Data::HashMap::Shared::SI32::mmap_size");
997 15           REGISTER_KW(si32, touch, "Data::HashMap::Shared::SI32::touch");
998 15           REGISTER_KW(si32, reserve, "Data::HashMap::Shared::SI32::reserve");
999 15           REGISTER_KW(si32, stat_evictions, "Data::HashMap::Shared::SI32::stat_evictions");
1000 15           REGISTER_KW(si32, stat_expired, "Data::HashMap::Shared::SI32::stat_expired");
1001 15           REGISTER_KW(si32, stat_recoveries, "Data::HashMap::Shared::SI32::stat_recoveries");
1002 15           REGISTER_KW(si32, arena_used, "Data::HashMap::Shared::SI32::arena_used");
1003 15           REGISTER_KW(si32, arena_cap, "Data::HashMap::Shared::SI32::arena_cap");
1004 15           REGISTER_KW(si32, add, "Data::HashMap::Shared::SI32::add");
1005 15           REGISTER_KW(si32, update, "Data::HashMap::Shared::SI32::update");
1006 15           REGISTER_KW(si32, swap, "Data::HashMap::Shared::SI32::swap");
1007 15           REGISTER_KW(si32, cas, "Data::HashMap::Shared::SI32::cas");
1008 15           REGISTER_KW(si32, persist, "Data::HashMap::Shared::SI32::persist");
1009 15           REGISTER_KW(si32, set_ttl, "Data::HashMap::Shared::SI32::set_ttl");
1010 15           REGISTER_KW(si, put, "Data::HashMap::Shared::SI::put");
1011 15           REGISTER_KW(si, get, "Data::HashMap::Shared::SI::get");
1012 15           REGISTER_KW(si, remove, "Data::HashMap::Shared::SI::remove");
1013 15           REGISTER_KW(si, exists, "Data::HashMap::Shared::SI::exists");
1014 15           REGISTER_KW(si, incr, "Data::HashMap::Shared::SI::incr");
1015 15           REGISTER_KW(si, decr, "Data::HashMap::Shared::SI::decr");
1016 15           REGISTER_KW(si, incr_by, "Data::HashMap::Shared::SI::incr_by");
1017 15           REGISTER_KW(si, size, "Data::HashMap::Shared::SI::size");
1018 15           REGISTER_KW(si, keys, "Data::HashMap::Shared::SI::keys");
1019 15           REGISTER_KW(si, values, "Data::HashMap::Shared::SI::values");
1020 15           REGISTER_KW(si, items, "Data::HashMap::Shared::SI::items");
1021 15           REGISTER_KW(si, each, "Data::HashMap::Shared::SI::each");
1022 15           REGISTER_KW(si, iter_reset, "Data::HashMap::Shared::SI::iter_reset");
1023 15           REGISTER_KW(si, clear, "Data::HashMap::Shared::SI::clear");
1024 15           REGISTER_KW(si, to_hash, "Data::HashMap::Shared::SI::to_hash");
1025 15           REGISTER_KW(si, max_entries, "Data::HashMap::Shared::SI::max_entries");
1026 15           REGISTER_KW(si, get_or_set, "Data::HashMap::Shared::SI::get_or_set");
1027 15           REGISTER_KW(si, put_ttl, "Data::HashMap::Shared::SI::put_ttl");
1028 15           REGISTER_KW(si, max_size, "Data::HashMap::Shared::SI::max_size");
1029 15           REGISTER_KW(si, ttl, "Data::HashMap::Shared::SI::ttl");
1030 15           REGISTER_KW(si, cursor, "Data::HashMap::Shared::SI::cursor");
1031 15           REGISTER_KW(si, cursor_next, "Data::HashMap::Shared::SI::Cursor::next");
1032 15           REGISTER_KW(si, cursor_reset, "Data::HashMap::Shared::SI::Cursor::reset");
1033 15           REGISTER_KW(si, cursor_seek, "Data::HashMap::Shared::SI::Cursor::seek");
1034 15           REGISTER_KW(si, ttl_remaining, "Data::HashMap::Shared::SI::ttl_remaining");
1035 15           REGISTER_KW(si, capacity, "Data::HashMap::Shared::SI::capacity");
1036 15           REGISTER_KW(si, tombstones, "Data::HashMap::Shared::SI::tombstones");
1037 15           REGISTER_KW(si, take, "Data::HashMap::Shared::SI::take");
1038 15           REGISTER_KW(si, pop, "Data::HashMap::Shared::SI::pop");
1039 15           REGISTER_KW(si, shift, "Data::HashMap::Shared::SI::shift");
1040 15           REGISTER_KW(si, drain, "Data::HashMap::Shared::SI::drain");
1041 15           REGISTER_KW(si, flush_expired, "Data::HashMap::Shared::SI::flush_expired");
1042 15           REGISTER_KW(si, flush_expired_partial, "Data::HashMap::Shared::SI::flush_expired_partial");
1043 15           REGISTER_KW(si, mmap_size, "Data::HashMap::Shared::SI::mmap_size");
1044 15           REGISTER_KW(si, touch, "Data::HashMap::Shared::SI::touch");
1045 15           REGISTER_KW(si, reserve, "Data::HashMap::Shared::SI::reserve");
1046 15           REGISTER_KW(si, stat_evictions, "Data::HashMap::Shared::SI::stat_evictions");
1047 15           REGISTER_KW(si, stat_expired, "Data::HashMap::Shared::SI::stat_expired");
1048 15           REGISTER_KW(si, stat_recoveries, "Data::HashMap::Shared::SI::stat_recoveries");
1049 15           REGISTER_KW(si, arena_used, "Data::HashMap::Shared::SI::arena_used");
1050 15           REGISTER_KW(si, arena_cap, "Data::HashMap::Shared::SI::arena_cap");
1051 15           REGISTER_KW(si, add, "Data::HashMap::Shared::SI::add");
1052 15           REGISTER_KW(si, update, "Data::HashMap::Shared::SI::update");
1053 15           REGISTER_KW(si, swap, "Data::HashMap::Shared::SI::swap");
1054 15           REGISTER_KW(si, cas, "Data::HashMap::Shared::SI::cas");
1055 15           REGISTER_KW(si, persist, "Data::HashMap::Shared::SI::persist");
1056 15           REGISTER_KW(si, set_ttl, "Data::HashMap::Shared::SI::set_ttl");
1057 15           REGISTER_KW(ss, put, "Data::HashMap::Shared::SS::put");
1058 15           REGISTER_KW(ss, get, "Data::HashMap::Shared::SS::get");
1059 15           REGISTER_KW(ss, remove, "Data::HashMap::Shared::SS::remove");
1060 15           REGISTER_KW(ss, exists, "Data::HashMap::Shared::SS::exists");
1061 15           REGISTER_KW(ss, size, "Data::HashMap::Shared::SS::size");
1062 15           REGISTER_KW(ss, keys, "Data::HashMap::Shared::SS::keys");
1063 15           REGISTER_KW(ss, values, "Data::HashMap::Shared::SS::values");
1064 15           REGISTER_KW(ss, items, "Data::HashMap::Shared::SS::items");
1065 15           REGISTER_KW(ss, each, "Data::HashMap::Shared::SS::each");
1066 15           REGISTER_KW(ss, iter_reset, "Data::HashMap::Shared::SS::iter_reset");
1067 15           REGISTER_KW(ss, clear, "Data::HashMap::Shared::SS::clear");
1068 15           REGISTER_KW(ss, to_hash, "Data::HashMap::Shared::SS::to_hash");
1069 15           REGISTER_KW(ss, max_entries, "Data::HashMap::Shared::SS::max_entries");
1070 15           REGISTER_KW(ss, get_or_set, "Data::HashMap::Shared::SS::get_or_set");
1071 15           REGISTER_KW(ss, put_ttl, "Data::HashMap::Shared::SS::put_ttl");
1072 15           REGISTER_KW(ss, max_size, "Data::HashMap::Shared::SS::max_size");
1073 15           REGISTER_KW(ss, ttl, "Data::HashMap::Shared::SS::ttl");
1074 15           REGISTER_KW(ss, cursor, "Data::HashMap::Shared::SS::cursor");
1075 15           REGISTER_KW(ss, cursor_next, "Data::HashMap::Shared::SS::Cursor::next");
1076 15           REGISTER_KW(ss, cursor_reset, "Data::HashMap::Shared::SS::Cursor::reset");
1077 15           REGISTER_KW(ss, cursor_seek, "Data::HashMap::Shared::SS::Cursor::seek");
1078 15           REGISTER_KW(ss, ttl_remaining, "Data::HashMap::Shared::SS::ttl_remaining");
1079 15           REGISTER_KW(ss, capacity, "Data::HashMap::Shared::SS::capacity");
1080 15           REGISTER_KW(ss, tombstones, "Data::HashMap::Shared::SS::tombstones");
1081 15           REGISTER_KW(ss, take, "Data::HashMap::Shared::SS::take");
1082 15           REGISTER_KW(ss, pop, "Data::HashMap::Shared::SS::pop");
1083 15           REGISTER_KW(ss, shift, "Data::HashMap::Shared::SS::shift");
1084 15           REGISTER_KW(ss, drain, "Data::HashMap::Shared::SS::drain");
1085 15           REGISTER_KW(ss, flush_expired, "Data::HashMap::Shared::SS::flush_expired");
1086 15           REGISTER_KW(ss, flush_expired_partial, "Data::HashMap::Shared::SS::flush_expired_partial");
1087 15           REGISTER_KW(ss, mmap_size, "Data::HashMap::Shared::SS::mmap_size");
1088 15           REGISTER_KW(ss, touch, "Data::HashMap::Shared::SS::touch");
1089 15           REGISTER_KW(ss, reserve, "Data::HashMap::Shared::SS::reserve");
1090 15           REGISTER_KW(ss, stat_evictions, "Data::HashMap::Shared::SS::stat_evictions");
1091 15           REGISTER_KW(ss, stat_expired, "Data::HashMap::Shared::SS::stat_expired");
1092 15           REGISTER_KW(ss, stat_recoveries, "Data::HashMap::Shared::SS::stat_recoveries");
1093 15           REGISTER_KW(ss, arena_used, "Data::HashMap::Shared::SS::arena_used");
1094 15           REGISTER_KW(ss, arena_cap, "Data::HashMap::Shared::SS::arena_cap");
1095 15           REGISTER_KW(ss, add, "Data::HashMap::Shared::SS::add");
1096 15           REGISTER_KW(ss, update, "Data::HashMap::Shared::SS::update");
1097 15           REGISTER_KW(ss, swap, "Data::HashMap::Shared::SS::swap");
1098 15           REGISTER_KW(ss, persist, "Data::HashMap::Shared::SS::persist");
1099 15           REGISTER_KW(ss, set_ttl, "Data::HashMap::Shared::SS::set_ttl");
1100              
1101              
1102             INCLUDE: xs/i16.xs
1103             INCLUDE: xs/i32.xs
1104             INCLUDE: xs/ii.xs
1105             INCLUDE: xs/i16s.xs
1106             INCLUDE: xs/i32s.xs
1107             INCLUDE: xs/is.xs
1108             INCLUDE: xs/si16.xs
1109             INCLUDE: xs/si32.xs
1110             INCLUDE: xs/si.xs
1111             INCLUDE: xs/ss.xs