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 50           static void shm_rdunlock_cleanup(pTHX_ void *ptr) {
24 50           ShmHeader *hdr = (ShmHeader *)ptr;
25 50           shm_rwlock_rdunlock(hdr);
26 50           }
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 346           static int build_kw_2arg(pTHX_ OP **out, XSParseKeywordPiece *args[], size_t nargs, void *hookdata) {
75             (void)nargs;
76 346           const char *func = (const char *)hookdata;
77 346           OP *map_op = args[0]->op;
78 346           OP *key_op = args[1]->op;
79 346           OP *cvref = newCVREF(0, newGVOP(OP_GV, 0, gv_fetchpv(func, GV_ADD, SVt_PVCV)));
80 346           OP *arglist = op_append_elem(OP_LIST, map_op, key_op);
81 346           arglist = op_append_elem(OP_LIST, arglist, cvref);
82 346           *out = op_convert_list(OP_ENTERSUB, OPf_STACKED, arglist);
83 346           return KEYWORD_PLUGIN_EXPR;
84             }
85              
86 371           static int build_kw_3arg(pTHX_ OP **out, XSParseKeywordPiece *args[], size_t nargs, void *hookdata) {
87             (void)nargs;
88 371           const char *func = (const char *)hookdata;
89 371           OP *map_op = args[0]->op;
90 371           OP *key_op = args[1]->op;
91 371           OP *val_op = args[2]->op;
92 371           OP *cvref = newCVREF(0, newGVOP(OP_GV, 0, gv_fetchpv(func, GV_ADD, SVt_PVCV)));
93 371           OP *arglist = op_append_elem(OP_LIST, map_op, key_op);
94 371           arglist = op_append_elem(OP_LIST, arglist, val_op);
95 371           arglist = op_append_elem(OP_LIST, arglist, cvref);
96 371           *out = op_convert_list(OP_ENTERSUB, OPf_STACKED, arglist);
97 371           return KEYWORD_PLUGIN_EXPR;
98             }
99              
100 32           static int build_kw_4arg(pTHX_ OP **out, XSParseKeywordPiece *args[], size_t nargs, void *hookdata) {
101             (void)nargs;
102 32           const char *func = (const char *)hookdata;
103 32           OP *map_op = args[0]->op;
104 32           OP *key_op = args[1]->op;
105 32           OP *val_op = args[2]->op;
106 32           OP *ttl_op = args[3]->op;
107 32           OP *cvref = newCVREF(0, newGVOP(OP_GV, 0, gv_fetchpv(func, GV_ADD, SVt_PVCV)));
108 32           OP *arglist = op_append_elem(OP_LIST, map_op, key_op);
109 32           arglist = op_append_elem(OP_LIST, arglist, val_op);
110 32           arglist = op_append_elem(OP_LIST, arglist, ttl_op);
111 32           arglist = op_append_elem(OP_LIST, arglist, cvref);
112 32           *out = op_convert_list(OP_ENTERSUB, OPf_STACKED, arglist);
113 32           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 10           boot_xs_parse_keyword(0.40);
645             /* I16 */
646 10           REGISTER_KW(i16, put, "Data::HashMap::Shared::I16::put");
647 10           REGISTER_KW(i16, get, "Data::HashMap::Shared::I16::get");
648 10           REGISTER_KW(i16, remove, "Data::HashMap::Shared::I16::remove");
649 10           REGISTER_KW(i16, exists, "Data::HashMap::Shared::I16::exists");
650 10           REGISTER_KW(i16, incr, "Data::HashMap::Shared::I16::incr");
651 10           REGISTER_KW(i16, decr, "Data::HashMap::Shared::I16::decr");
652 10           REGISTER_KW(i16, incr_by, "Data::HashMap::Shared::I16::incr_by");
653 10           REGISTER_KW(i16, size, "Data::HashMap::Shared::I16::size");
654 10           REGISTER_KW(i16, keys, "Data::HashMap::Shared::I16::keys");
655 10           REGISTER_KW(i16, values, "Data::HashMap::Shared::I16::values");
656 10           REGISTER_KW(i16, items, "Data::HashMap::Shared::I16::items");
657 10           REGISTER_KW(i16, each, "Data::HashMap::Shared::I16::each");
658 10           REGISTER_KW(i16, iter_reset, "Data::HashMap::Shared::I16::iter_reset");
659 10           REGISTER_KW(i16, clear, "Data::HashMap::Shared::I16::clear");
660 10           REGISTER_KW(i16, to_hash, "Data::HashMap::Shared::I16::to_hash");
661 10           REGISTER_KW(i16, max_entries, "Data::HashMap::Shared::I16::max_entries");
662 10           REGISTER_KW(i16, get_or_set, "Data::HashMap::Shared::I16::get_or_set");
663 10           REGISTER_KW(i16, put_ttl, "Data::HashMap::Shared::I16::put_ttl");
664 10           REGISTER_KW(i16, max_size, "Data::HashMap::Shared::I16::max_size");
665 10           REGISTER_KW(i16, ttl, "Data::HashMap::Shared::I16::ttl");
666 10           REGISTER_KW(i16, cursor, "Data::HashMap::Shared::I16::cursor");
667 10           REGISTER_KW(i16, cursor_next, "Data::HashMap::Shared::I16::Cursor::next");
668 10           REGISTER_KW(i16, cursor_reset, "Data::HashMap::Shared::I16::Cursor::reset");
669 10           REGISTER_KW(i16, cursor_seek, "Data::HashMap::Shared::I16::Cursor::seek");
670 10           REGISTER_KW(i16, ttl_remaining, "Data::HashMap::Shared::I16::ttl_remaining");
671 10           REGISTER_KW(i16, capacity, "Data::HashMap::Shared::I16::capacity");
672 10           REGISTER_KW(i16, tombstones, "Data::HashMap::Shared::I16::tombstones");
673 10           REGISTER_KW(i16, take, "Data::HashMap::Shared::I16::take");
674 10           REGISTER_KW(i16, pop, "Data::HashMap::Shared::I16::pop");
675 10           REGISTER_KW(i16, shift, "Data::HashMap::Shared::I16::shift");
676 10           REGISTER_KW(i16, drain, "Data::HashMap::Shared::I16::drain");
677 10           REGISTER_KW(i16, flush_expired, "Data::HashMap::Shared::I16::flush_expired");
678 10           REGISTER_KW(i16, flush_expired_partial, "Data::HashMap::Shared::I16::flush_expired_partial");
679 10           REGISTER_KW(i16, mmap_size, "Data::HashMap::Shared::I16::mmap_size");
680 10           REGISTER_KW(i16, touch, "Data::HashMap::Shared::I16::touch");
681 10           REGISTER_KW(i16, reserve, "Data::HashMap::Shared::I16::reserve");
682 10           REGISTER_KW(i16, stat_evictions, "Data::HashMap::Shared::I16::stat_evictions");
683 10           REGISTER_KW(i16, stat_expired, "Data::HashMap::Shared::I16::stat_expired");
684 10           REGISTER_KW(i16, stat_recoveries, "Data::HashMap::Shared::I16::stat_recoveries");
685 10           REGISTER_KW(i16, arena_used, "Data::HashMap::Shared::I16::arena_used");
686 10           REGISTER_KW(i16, arena_cap, "Data::HashMap::Shared::I16::arena_cap");
687 10           REGISTER_KW(i16, add, "Data::HashMap::Shared::I16::add");
688 10           REGISTER_KW(i16, update, "Data::HashMap::Shared::I16::update");
689 10           REGISTER_KW(i16, swap, "Data::HashMap::Shared::I16::swap");
690 10           REGISTER_KW(i16, cas, "Data::HashMap::Shared::I16::cas");
691 10           REGISTER_KW(i16, persist, "Data::HashMap::Shared::I16::persist");
692 10           REGISTER_KW(i16, set_ttl, "Data::HashMap::Shared::I16::set_ttl");
693 10           REGISTER_KW(i32, put, "Data::HashMap::Shared::I32::put");
694 10           REGISTER_KW(i32, get, "Data::HashMap::Shared::I32::get");
695 10           REGISTER_KW(i32, remove, "Data::HashMap::Shared::I32::remove");
696 10           REGISTER_KW(i32, exists, "Data::HashMap::Shared::I32::exists");
697 10           REGISTER_KW(i32, incr, "Data::HashMap::Shared::I32::incr");
698 10           REGISTER_KW(i32, decr, "Data::HashMap::Shared::I32::decr");
699 10           REGISTER_KW(i32, incr_by, "Data::HashMap::Shared::I32::incr_by");
700 10           REGISTER_KW(i32, size, "Data::HashMap::Shared::I32::size");
701 10           REGISTER_KW(i32, keys, "Data::HashMap::Shared::I32::keys");
702 10           REGISTER_KW(i32, values, "Data::HashMap::Shared::I32::values");
703 10           REGISTER_KW(i32, items, "Data::HashMap::Shared::I32::items");
704 10           REGISTER_KW(i32, each, "Data::HashMap::Shared::I32::each");
705 10           REGISTER_KW(i32, iter_reset, "Data::HashMap::Shared::I32::iter_reset");
706 10           REGISTER_KW(i32, clear, "Data::HashMap::Shared::I32::clear");
707 10           REGISTER_KW(i32, to_hash, "Data::HashMap::Shared::I32::to_hash");
708 10           REGISTER_KW(i32, max_entries, "Data::HashMap::Shared::I32::max_entries");
709 10           REGISTER_KW(i32, get_or_set, "Data::HashMap::Shared::I32::get_or_set");
710 10           REGISTER_KW(i32, put_ttl, "Data::HashMap::Shared::I32::put_ttl");
711 10           REGISTER_KW(i32, max_size, "Data::HashMap::Shared::I32::max_size");
712 10           REGISTER_KW(i32, ttl, "Data::HashMap::Shared::I32::ttl");
713 10           REGISTER_KW(i32, cursor, "Data::HashMap::Shared::I32::cursor");
714 10           REGISTER_KW(i32, cursor_next, "Data::HashMap::Shared::I32::Cursor::next");
715 10           REGISTER_KW(i32, cursor_reset, "Data::HashMap::Shared::I32::Cursor::reset");
716 10           REGISTER_KW(i32, cursor_seek, "Data::HashMap::Shared::I32::Cursor::seek");
717 10           REGISTER_KW(i32, ttl_remaining, "Data::HashMap::Shared::I32::ttl_remaining");
718 10           REGISTER_KW(i32, capacity, "Data::HashMap::Shared::I32::capacity");
719 10           REGISTER_KW(i32, tombstones, "Data::HashMap::Shared::I32::tombstones");
720 10           REGISTER_KW(i32, take, "Data::HashMap::Shared::I32::take");
721 10           REGISTER_KW(i32, pop, "Data::HashMap::Shared::I32::pop");
722 10           REGISTER_KW(i32, shift, "Data::HashMap::Shared::I32::shift");
723 10           REGISTER_KW(i32, drain, "Data::HashMap::Shared::I32::drain");
724 10           REGISTER_KW(i32, flush_expired, "Data::HashMap::Shared::I32::flush_expired");
725 10           REGISTER_KW(i32, flush_expired_partial, "Data::HashMap::Shared::I32::flush_expired_partial");
726 10           REGISTER_KW(i32, mmap_size, "Data::HashMap::Shared::I32::mmap_size");
727 10           REGISTER_KW(i32, touch, "Data::HashMap::Shared::I32::touch");
728 10           REGISTER_KW(i32, reserve, "Data::HashMap::Shared::I32::reserve");
729 10           REGISTER_KW(i32, stat_evictions, "Data::HashMap::Shared::I32::stat_evictions");
730 10           REGISTER_KW(i32, stat_expired, "Data::HashMap::Shared::I32::stat_expired");
731 10           REGISTER_KW(i32, stat_recoveries, "Data::HashMap::Shared::I32::stat_recoveries");
732 10           REGISTER_KW(i32, arena_used, "Data::HashMap::Shared::I32::arena_used");
733 10           REGISTER_KW(i32, arena_cap, "Data::HashMap::Shared::I32::arena_cap");
734 10           REGISTER_KW(i32, add, "Data::HashMap::Shared::I32::add");
735 10           REGISTER_KW(i32, update, "Data::HashMap::Shared::I32::update");
736 10           REGISTER_KW(i32, swap, "Data::HashMap::Shared::I32::swap");
737 10           REGISTER_KW(i32, cas, "Data::HashMap::Shared::I32::cas");
738 10           REGISTER_KW(i32, persist, "Data::HashMap::Shared::I32::persist");
739 10           REGISTER_KW(i32, set_ttl, "Data::HashMap::Shared::I32::set_ttl");
740 10           REGISTER_KW(ii, put, "Data::HashMap::Shared::II::put");
741 10           REGISTER_KW(ii, get, "Data::HashMap::Shared::II::get");
742 10           REGISTER_KW(ii, remove, "Data::HashMap::Shared::II::remove");
743 10           REGISTER_KW(ii, exists, "Data::HashMap::Shared::II::exists");
744 10           REGISTER_KW(ii, incr, "Data::HashMap::Shared::II::incr");
745 10           REGISTER_KW(ii, decr, "Data::HashMap::Shared::II::decr");
746 10           REGISTER_KW(ii, incr_by, "Data::HashMap::Shared::II::incr_by");
747 10           REGISTER_KW(ii, size, "Data::HashMap::Shared::II::size");
748 10           REGISTER_KW(ii, keys, "Data::HashMap::Shared::II::keys");
749 10           REGISTER_KW(ii, values, "Data::HashMap::Shared::II::values");
750 10           REGISTER_KW(ii, items, "Data::HashMap::Shared::II::items");
751 10           REGISTER_KW(ii, each, "Data::HashMap::Shared::II::each");
752 10           REGISTER_KW(ii, iter_reset, "Data::HashMap::Shared::II::iter_reset");
753 10           REGISTER_KW(ii, clear, "Data::HashMap::Shared::II::clear");
754 10           REGISTER_KW(ii, to_hash, "Data::HashMap::Shared::II::to_hash");
755 10           REGISTER_KW(ii, max_entries, "Data::HashMap::Shared::II::max_entries");
756 10           REGISTER_KW(ii, get_or_set, "Data::HashMap::Shared::II::get_or_set");
757 10           REGISTER_KW(ii, put_ttl, "Data::HashMap::Shared::II::put_ttl");
758 10           REGISTER_KW(ii, max_size, "Data::HashMap::Shared::II::max_size");
759 10           REGISTER_KW(ii, ttl, "Data::HashMap::Shared::II::ttl");
760 10           REGISTER_KW(ii, cursor, "Data::HashMap::Shared::II::cursor");
761 10           REGISTER_KW(ii, cursor_next, "Data::HashMap::Shared::II::Cursor::next");
762 10           REGISTER_KW(ii, cursor_reset, "Data::HashMap::Shared::II::Cursor::reset");
763 10           REGISTER_KW(ii, cursor_seek, "Data::HashMap::Shared::II::Cursor::seek");
764 10           REGISTER_KW(ii, ttl_remaining, "Data::HashMap::Shared::II::ttl_remaining");
765 10           REGISTER_KW(ii, capacity, "Data::HashMap::Shared::II::capacity");
766 10           REGISTER_KW(ii, tombstones, "Data::HashMap::Shared::II::tombstones");
767 10           REGISTER_KW(ii, take, "Data::HashMap::Shared::II::take");
768 10           REGISTER_KW(ii, pop, "Data::HashMap::Shared::II::pop");
769 10           REGISTER_KW(ii, shift, "Data::HashMap::Shared::II::shift");
770 10           REGISTER_KW(ii, drain, "Data::HashMap::Shared::II::drain");
771 10           REGISTER_KW(ii, flush_expired, "Data::HashMap::Shared::II::flush_expired");
772 10           REGISTER_KW(ii, flush_expired_partial, "Data::HashMap::Shared::II::flush_expired_partial");
773 10           REGISTER_KW(ii, mmap_size, "Data::HashMap::Shared::II::mmap_size");
774 10           REGISTER_KW(ii, touch, "Data::HashMap::Shared::II::touch");
775 10           REGISTER_KW(ii, reserve, "Data::HashMap::Shared::II::reserve");
776 10           REGISTER_KW(ii, stat_evictions, "Data::HashMap::Shared::II::stat_evictions");
777 10           REGISTER_KW(ii, stat_expired, "Data::HashMap::Shared::II::stat_expired");
778 10           REGISTER_KW(ii, stat_recoveries, "Data::HashMap::Shared::II::stat_recoveries");
779 10           REGISTER_KW(ii, arena_used, "Data::HashMap::Shared::II::arena_used");
780 10           REGISTER_KW(ii, arena_cap, "Data::HashMap::Shared::II::arena_cap");
781 10           REGISTER_KW(ii, add, "Data::HashMap::Shared::II::add");
782 10           REGISTER_KW(ii, update, "Data::HashMap::Shared::II::update");
783 10           REGISTER_KW(ii, swap, "Data::HashMap::Shared::II::swap");
784 10           REGISTER_KW(ii, cas, "Data::HashMap::Shared::II::cas");
785 10           REGISTER_KW(ii, persist, "Data::HashMap::Shared::II::persist");
786 10           REGISTER_KW(ii, set_ttl, "Data::HashMap::Shared::II::set_ttl");
787 10           REGISTER_KW(i16s, put, "Data::HashMap::Shared::I16S::put");
788 10           REGISTER_KW(i16s, get, "Data::HashMap::Shared::I16S::get");
789 10           REGISTER_KW(i16s, remove, "Data::HashMap::Shared::I16S::remove");
790 10           REGISTER_KW(i16s, exists, "Data::HashMap::Shared::I16S::exists");
791 10           REGISTER_KW(i16s, size, "Data::HashMap::Shared::I16S::size");
792 10           REGISTER_KW(i16s, keys, "Data::HashMap::Shared::I16S::keys");
793 10           REGISTER_KW(i16s, values, "Data::HashMap::Shared::I16S::values");
794 10           REGISTER_KW(i16s, items, "Data::HashMap::Shared::I16S::items");
795 10           REGISTER_KW(i16s, each, "Data::HashMap::Shared::I16S::each");
796 10           REGISTER_KW(i16s, iter_reset, "Data::HashMap::Shared::I16S::iter_reset");
797 10           REGISTER_KW(i16s, clear, "Data::HashMap::Shared::I16S::clear");
798 10           REGISTER_KW(i16s, to_hash, "Data::HashMap::Shared::I16S::to_hash");
799 10           REGISTER_KW(i16s, max_entries, "Data::HashMap::Shared::I16S::max_entries");
800 10           REGISTER_KW(i16s, get_or_set, "Data::HashMap::Shared::I16S::get_or_set");
801 10           REGISTER_KW(i16s, put_ttl, "Data::HashMap::Shared::I16S::put_ttl");
802 10           REGISTER_KW(i16s, max_size, "Data::HashMap::Shared::I16S::max_size");
803 10           REGISTER_KW(i16s, ttl, "Data::HashMap::Shared::I16S::ttl");
804 10           REGISTER_KW(i16s, cursor, "Data::HashMap::Shared::I16S::cursor");
805 10           REGISTER_KW(i16s, cursor_next, "Data::HashMap::Shared::I16S::Cursor::next");
806 10           REGISTER_KW(i16s, cursor_reset, "Data::HashMap::Shared::I16S::Cursor::reset");
807 10           REGISTER_KW(i16s, cursor_seek, "Data::HashMap::Shared::I16S::Cursor::seek");
808 10           REGISTER_KW(i16s, ttl_remaining, "Data::HashMap::Shared::I16S::ttl_remaining");
809 10           REGISTER_KW(i16s, capacity, "Data::HashMap::Shared::I16S::capacity");
810 10           REGISTER_KW(i16s, tombstones, "Data::HashMap::Shared::I16S::tombstones");
811 10           REGISTER_KW(i16s, take, "Data::HashMap::Shared::I16S::take");
812 10           REGISTER_KW(i16s, pop, "Data::HashMap::Shared::I16S::pop");
813 10           REGISTER_KW(i16s, shift, "Data::HashMap::Shared::I16S::shift");
814 10           REGISTER_KW(i16s, drain, "Data::HashMap::Shared::I16S::drain");
815 10           REGISTER_KW(i16s, flush_expired, "Data::HashMap::Shared::I16S::flush_expired");
816 10           REGISTER_KW(i16s, flush_expired_partial, "Data::HashMap::Shared::I16S::flush_expired_partial");
817 10           REGISTER_KW(i16s, mmap_size, "Data::HashMap::Shared::I16S::mmap_size");
818 10           REGISTER_KW(i16s, touch, "Data::HashMap::Shared::I16S::touch");
819 10           REGISTER_KW(i16s, reserve, "Data::HashMap::Shared::I16S::reserve");
820 10           REGISTER_KW(i16s, stat_evictions, "Data::HashMap::Shared::I16S::stat_evictions");
821 10           REGISTER_KW(i16s, stat_expired, "Data::HashMap::Shared::I16S::stat_expired");
822 10           REGISTER_KW(i16s, stat_recoveries, "Data::HashMap::Shared::I16S::stat_recoveries");
823 10           REGISTER_KW(i16s, arena_used, "Data::HashMap::Shared::I16S::arena_used");
824 10           REGISTER_KW(i16s, arena_cap, "Data::HashMap::Shared::I16S::arena_cap");
825 10           REGISTER_KW(i16s, add, "Data::HashMap::Shared::I16S::add");
826 10           REGISTER_KW(i16s, update, "Data::HashMap::Shared::I16S::update");
827 10           REGISTER_KW(i16s, swap, "Data::HashMap::Shared::I16S::swap");
828 10           REGISTER_KW(i16s, persist, "Data::HashMap::Shared::I16S::persist");
829 10           REGISTER_KW(i16s, set_ttl, "Data::HashMap::Shared::I16S::set_ttl");
830 10           REGISTER_KW(i32s, put, "Data::HashMap::Shared::I32S::put");
831 10           REGISTER_KW(i32s, get, "Data::HashMap::Shared::I32S::get");
832 10           REGISTER_KW(i32s, remove, "Data::HashMap::Shared::I32S::remove");
833 10           REGISTER_KW(i32s, exists, "Data::HashMap::Shared::I32S::exists");
834 10           REGISTER_KW(i32s, size, "Data::HashMap::Shared::I32S::size");
835 10           REGISTER_KW(i32s, keys, "Data::HashMap::Shared::I32S::keys");
836 10           REGISTER_KW(i32s, values, "Data::HashMap::Shared::I32S::values");
837 10           REGISTER_KW(i32s, items, "Data::HashMap::Shared::I32S::items");
838 10           REGISTER_KW(i32s, each, "Data::HashMap::Shared::I32S::each");
839 10           REGISTER_KW(i32s, iter_reset, "Data::HashMap::Shared::I32S::iter_reset");
840 10           REGISTER_KW(i32s, clear, "Data::HashMap::Shared::I32S::clear");
841 10           REGISTER_KW(i32s, to_hash, "Data::HashMap::Shared::I32S::to_hash");
842 10           REGISTER_KW(i32s, max_entries, "Data::HashMap::Shared::I32S::max_entries");
843 10           REGISTER_KW(i32s, get_or_set, "Data::HashMap::Shared::I32S::get_or_set");
844 10           REGISTER_KW(i32s, put_ttl, "Data::HashMap::Shared::I32S::put_ttl");
845 10           REGISTER_KW(i32s, max_size, "Data::HashMap::Shared::I32S::max_size");
846 10           REGISTER_KW(i32s, ttl, "Data::HashMap::Shared::I32S::ttl");
847 10           REGISTER_KW(i32s, cursor, "Data::HashMap::Shared::I32S::cursor");
848 10           REGISTER_KW(i32s, cursor_next, "Data::HashMap::Shared::I32S::Cursor::next");
849 10           REGISTER_KW(i32s, cursor_reset, "Data::HashMap::Shared::I32S::Cursor::reset");
850 10           REGISTER_KW(i32s, cursor_seek, "Data::HashMap::Shared::I32S::Cursor::seek");
851 10           REGISTER_KW(i32s, ttl_remaining, "Data::HashMap::Shared::I32S::ttl_remaining");
852 10           REGISTER_KW(i32s, capacity, "Data::HashMap::Shared::I32S::capacity");
853 10           REGISTER_KW(i32s, tombstones, "Data::HashMap::Shared::I32S::tombstones");
854 10           REGISTER_KW(i32s, take, "Data::HashMap::Shared::I32S::take");
855 10           REGISTER_KW(i32s, pop, "Data::HashMap::Shared::I32S::pop");
856 10           REGISTER_KW(i32s, shift, "Data::HashMap::Shared::I32S::shift");
857 10           REGISTER_KW(i32s, drain, "Data::HashMap::Shared::I32S::drain");
858 10           REGISTER_KW(i32s, flush_expired, "Data::HashMap::Shared::I32S::flush_expired");
859 10           REGISTER_KW(i32s, flush_expired_partial, "Data::HashMap::Shared::I32S::flush_expired_partial");
860 10           REGISTER_KW(i32s, mmap_size, "Data::HashMap::Shared::I32S::mmap_size");
861 10           REGISTER_KW(i32s, touch, "Data::HashMap::Shared::I32S::touch");
862 10           REGISTER_KW(i32s, reserve, "Data::HashMap::Shared::I32S::reserve");
863 10           REGISTER_KW(i32s, stat_evictions, "Data::HashMap::Shared::I32S::stat_evictions");
864 10           REGISTER_KW(i32s, stat_expired, "Data::HashMap::Shared::I32S::stat_expired");
865 10           REGISTER_KW(i32s, stat_recoveries, "Data::HashMap::Shared::I32S::stat_recoveries");
866 10           REGISTER_KW(i32s, arena_used, "Data::HashMap::Shared::I32S::arena_used");
867 10           REGISTER_KW(i32s, arena_cap, "Data::HashMap::Shared::I32S::arena_cap");
868 10           REGISTER_KW(i32s, add, "Data::HashMap::Shared::I32S::add");
869 10           REGISTER_KW(i32s, update, "Data::HashMap::Shared::I32S::update");
870 10           REGISTER_KW(i32s, swap, "Data::HashMap::Shared::I32S::swap");
871 10           REGISTER_KW(i32s, persist, "Data::HashMap::Shared::I32S::persist");
872 10           REGISTER_KW(i32s, set_ttl, "Data::HashMap::Shared::I32S::set_ttl");
873 10           REGISTER_KW(is, put, "Data::HashMap::Shared::IS::put");
874 10           REGISTER_KW(is, get, "Data::HashMap::Shared::IS::get");
875 10           REGISTER_KW(is, remove, "Data::HashMap::Shared::IS::remove");
876 10           REGISTER_KW(is, exists, "Data::HashMap::Shared::IS::exists");
877 10           REGISTER_KW(is, size, "Data::HashMap::Shared::IS::size");
878 10           REGISTER_KW(is, keys, "Data::HashMap::Shared::IS::keys");
879 10           REGISTER_KW(is, values, "Data::HashMap::Shared::IS::values");
880 10           REGISTER_KW(is, items, "Data::HashMap::Shared::IS::items");
881 10           REGISTER_KW(is, each, "Data::HashMap::Shared::IS::each");
882 10           REGISTER_KW(is, iter_reset, "Data::HashMap::Shared::IS::iter_reset");
883 10           REGISTER_KW(is, clear, "Data::HashMap::Shared::IS::clear");
884 10           REGISTER_KW(is, to_hash, "Data::HashMap::Shared::IS::to_hash");
885 10           REGISTER_KW(is, max_entries, "Data::HashMap::Shared::IS::max_entries");
886 10           REGISTER_KW(is, get_or_set, "Data::HashMap::Shared::IS::get_or_set");
887 10           REGISTER_KW(is, put_ttl, "Data::HashMap::Shared::IS::put_ttl");
888 10           REGISTER_KW(is, max_size, "Data::HashMap::Shared::IS::max_size");
889 10           REGISTER_KW(is, ttl, "Data::HashMap::Shared::IS::ttl");
890 10           REGISTER_KW(is, cursor, "Data::HashMap::Shared::IS::cursor");
891 10           REGISTER_KW(is, cursor_next, "Data::HashMap::Shared::IS::Cursor::next");
892 10           REGISTER_KW(is, cursor_reset, "Data::HashMap::Shared::IS::Cursor::reset");
893 10           REGISTER_KW(is, cursor_seek, "Data::HashMap::Shared::IS::Cursor::seek");
894 10           REGISTER_KW(is, ttl_remaining, "Data::HashMap::Shared::IS::ttl_remaining");
895 10           REGISTER_KW(is, capacity, "Data::HashMap::Shared::IS::capacity");
896 10           REGISTER_KW(is, tombstones, "Data::HashMap::Shared::IS::tombstones");
897 10           REGISTER_KW(is, take, "Data::HashMap::Shared::IS::take");
898 10           REGISTER_KW(is, pop, "Data::HashMap::Shared::IS::pop");
899 10           REGISTER_KW(is, shift, "Data::HashMap::Shared::IS::shift");
900 10           REGISTER_KW(is, drain, "Data::HashMap::Shared::IS::drain");
901 10           REGISTER_KW(is, flush_expired, "Data::HashMap::Shared::IS::flush_expired");
902 10           REGISTER_KW(is, flush_expired_partial, "Data::HashMap::Shared::IS::flush_expired_partial");
903 10           REGISTER_KW(is, mmap_size, "Data::HashMap::Shared::IS::mmap_size");
904 10           REGISTER_KW(is, touch, "Data::HashMap::Shared::IS::touch");
905 10           REGISTER_KW(is, reserve, "Data::HashMap::Shared::IS::reserve");
906 10           REGISTER_KW(is, stat_evictions, "Data::HashMap::Shared::IS::stat_evictions");
907 10           REGISTER_KW(is, stat_expired, "Data::HashMap::Shared::IS::stat_expired");
908 10           REGISTER_KW(is, stat_recoveries, "Data::HashMap::Shared::IS::stat_recoveries");
909 10           REGISTER_KW(is, arena_used, "Data::HashMap::Shared::IS::arena_used");
910 10           REGISTER_KW(is, arena_cap, "Data::HashMap::Shared::IS::arena_cap");
911 10           REGISTER_KW(is, add, "Data::HashMap::Shared::IS::add");
912 10           REGISTER_KW(is, update, "Data::HashMap::Shared::IS::update");
913 10           REGISTER_KW(is, swap, "Data::HashMap::Shared::IS::swap");
914 10           REGISTER_KW(is, persist, "Data::HashMap::Shared::IS::persist");
915 10           REGISTER_KW(is, set_ttl, "Data::HashMap::Shared::IS::set_ttl");
916 10           REGISTER_KW(si16, put, "Data::HashMap::Shared::SI16::put");
917 10           REGISTER_KW(si16, get, "Data::HashMap::Shared::SI16::get");
918 10           REGISTER_KW(si16, remove, "Data::HashMap::Shared::SI16::remove");
919 10           REGISTER_KW(si16, exists, "Data::HashMap::Shared::SI16::exists");
920 10           REGISTER_KW(si16, incr, "Data::HashMap::Shared::SI16::incr");
921 10           REGISTER_KW(si16, decr, "Data::HashMap::Shared::SI16::decr");
922 10           REGISTER_KW(si16, incr_by, "Data::HashMap::Shared::SI16::incr_by");
923 10           REGISTER_KW(si16, size, "Data::HashMap::Shared::SI16::size");
924 10           REGISTER_KW(si16, keys, "Data::HashMap::Shared::SI16::keys");
925 10           REGISTER_KW(si16, values, "Data::HashMap::Shared::SI16::values");
926 10           REGISTER_KW(si16, items, "Data::HashMap::Shared::SI16::items");
927 10           REGISTER_KW(si16, each, "Data::HashMap::Shared::SI16::each");
928 10           REGISTER_KW(si16, iter_reset, "Data::HashMap::Shared::SI16::iter_reset");
929 10           REGISTER_KW(si16, clear, "Data::HashMap::Shared::SI16::clear");
930 10           REGISTER_KW(si16, to_hash, "Data::HashMap::Shared::SI16::to_hash");
931 10           REGISTER_KW(si16, max_entries, "Data::HashMap::Shared::SI16::max_entries");
932 10           REGISTER_KW(si16, get_or_set, "Data::HashMap::Shared::SI16::get_or_set");
933 10           REGISTER_KW(si16, put_ttl, "Data::HashMap::Shared::SI16::put_ttl");
934 10           REGISTER_KW(si16, max_size, "Data::HashMap::Shared::SI16::max_size");
935 10           REGISTER_KW(si16, ttl, "Data::HashMap::Shared::SI16::ttl");
936 10           REGISTER_KW(si16, cursor, "Data::HashMap::Shared::SI16::cursor");
937 10           REGISTER_KW(si16, cursor_next, "Data::HashMap::Shared::SI16::Cursor::next");
938 10           REGISTER_KW(si16, cursor_reset, "Data::HashMap::Shared::SI16::Cursor::reset");
939 10           REGISTER_KW(si16, cursor_seek, "Data::HashMap::Shared::SI16::Cursor::seek");
940 10           REGISTER_KW(si16, ttl_remaining, "Data::HashMap::Shared::SI16::ttl_remaining");
941 10           REGISTER_KW(si16, capacity, "Data::HashMap::Shared::SI16::capacity");
942 10           REGISTER_KW(si16, tombstones, "Data::HashMap::Shared::SI16::tombstones");
943 10           REGISTER_KW(si16, take, "Data::HashMap::Shared::SI16::take");
944 10           REGISTER_KW(si16, pop, "Data::HashMap::Shared::SI16::pop");
945 10           REGISTER_KW(si16, shift, "Data::HashMap::Shared::SI16::shift");
946 10           REGISTER_KW(si16, drain, "Data::HashMap::Shared::SI16::drain");
947 10           REGISTER_KW(si16, flush_expired, "Data::HashMap::Shared::SI16::flush_expired");
948 10           REGISTER_KW(si16, flush_expired_partial, "Data::HashMap::Shared::SI16::flush_expired_partial");
949 10           REGISTER_KW(si16, mmap_size, "Data::HashMap::Shared::SI16::mmap_size");
950 10           REGISTER_KW(si16, touch, "Data::HashMap::Shared::SI16::touch");
951 10           REGISTER_KW(si16, reserve, "Data::HashMap::Shared::SI16::reserve");
952 10           REGISTER_KW(si16, stat_evictions, "Data::HashMap::Shared::SI16::stat_evictions");
953 10           REGISTER_KW(si16, stat_expired, "Data::HashMap::Shared::SI16::stat_expired");
954 10           REGISTER_KW(si16, stat_recoveries, "Data::HashMap::Shared::SI16::stat_recoveries");
955 10           REGISTER_KW(si16, arena_used, "Data::HashMap::Shared::SI16::arena_used");
956 10           REGISTER_KW(si16, arena_cap, "Data::HashMap::Shared::SI16::arena_cap");
957 10           REGISTER_KW(si16, add, "Data::HashMap::Shared::SI16::add");
958 10           REGISTER_KW(si16, update, "Data::HashMap::Shared::SI16::update");
959 10           REGISTER_KW(si16, swap, "Data::HashMap::Shared::SI16::swap");
960 10           REGISTER_KW(si16, cas, "Data::HashMap::Shared::SI16::cas");
961 10           REGISTER_KW(si16, persist, "Data::HashMap::Shared::SI16::persist");
962 10           REGISTER_KW(si16, set_ttl, "Data::HashMap::Shared::SI16::set_ttl");
963 10           REGISTER_KW(si32, put, "Data::HashMap::Shared::SI32::put");
964 10           REGISTER_KW(si32, get, "Data::HashMap::Shared::SI32::get");
965 10           REGISTER_KW(si32, remove, "Data::HashMap::Shared::SI32::remove");
966 10           REGISTER_KW(si32, exists, "Data::HashMap::Shared::SI32::exists");
967 10           REGISTER_KW(si32, incr, "Data::HashMap::Shared::SI32::incr");
968 10           REGISTER_KW(si32, decr, "Data::HashMap::Shared::SI32::decr");
969 10           REGISTER_KW(si32, incr_by, "Data::HashMap::Shared::SI32::incr_by");
970 10           REGISTER_KW(si32, size, "Data::HashMap::Shared::SI32::size");
971 10           REGISTER_KW(si32, keys, "Data::HashMap::Shared::SI32::keys");
972 10           REGISTER_KW(si32, values, "Data::HashMap::Shared::SI32::values");
973 10           REGISTER_KW(si32, items, "Data::HashMap::Shared::SI32::items");
974 10           REGISTER_KW(si32, each, "Data::HashMap::Shared::SI32::each");
975 10           REGISTER_KW(si32, iter_reset, "Data::HashMap::Shared::SI32::iter_reset");
976 10           REGISTER_KW(si32, clear, "Data::HashMap::Shared::SI32::clear");
977 10           REGISTER_KW(si32, to_hash, "Data::HashMap::Shared::SI32::to_hash");
978 10           REGISTER_KW(si32, max_entries, "Data::HashMap::Shared::SI32::max_entries");
979 10           REGISTER_KW(si32, get_or_set, "Data::HashMap::Shared::SI32::get_or_set");
980 10           REGISTER_KW(si32, put_ttl, "Data::HashMap::Shared::SI32::put_ttl");
981 10           REGISTER_KW(si32, max_size, "Data::HashMap::Shared::SI32::max_size");
982 10           REGISTER_KW(si32, ttl, "Data::HashMap::Shared::SI32::ttl");
983 10           REGISTER_KW(si32, cursor, "Data::HashMap::Shared::SI32::cursor");
984 10           REGISTER_KW(si32, cursor_next, "Data::HashMap::Shared::SI32::Cursor::next");
985 10           REGISTER_KW(si32, cursor_reset, "Data::HashMap::Shared::SI32::Cursor::reset");
986 10           REGISTER_KW(si32, cursor_seek, "Data::HashMap::Shared::SI32::Cursor::seek");
987 10           REGISTER_KW(si32, ttl_remaining, "Data::HashMap::Shared::SI32::ttl_remaining");
988 10           REGISTER_KW(si32, capacity, "Data::HashMap::Shared::SI32::capacity");
989 10           REGISTER_KW(si32, tombstones, "Data::HashMap::Shared::SI32::tombstones");
990 10           REGISTER_KW(si32, take, "Data::HashMap::Shared::SI32::take");
991 10           REGISTER_KW(si32, pop, "Data::HashMap::Shared::SI32::pop");
992 10           REGISTER_KW(si32, shift, "Data::HashMap::Shared::SI32::shift");
993 10           REGISTER_KW(si32, drain, "Data::HashMap::Shared::SI32::drain");
994 10           REGISTER_KW(si32, flush_expired, "Data::HashMap::Shared::SI32::flush_expired");
995 10           REGISTER_KW(si32, flush_expired_partial, "Data::HashMap::Shared::SI32::flush_expired_partial");
996 10           REGISTER_KW(si32, mmap_size, "Data::HashMap::Shared::SI32::mmap_size");
997 10           REGISTER_KW(si32, touch, "Data::HashMap::Shared::SI32::touch");
998 10           REGISTER_KW(si32, reserve, "Data::HashMap::Shared::SI32::reserve");
999 10           REGISTER_KW(si32, stat_evictions, "Data::HashMap::Shared::SI32::stat_evictions");
1000 10           REGISTER_KW(si32, stat_expired, "Data::HashMap::Shared::SI32::stat_expired");
1001 10           REGISTER_KW(si32, stat_recoveries, "Data::HashMap::Shared::SI32::stat_recoveries");
1002 10           REGISTER_KW(si32, arena_used, "Data::HashMap::Shared::SI32::arena_used");
1003 10           REGISTER_KW(si32, arena_cap, "Data::HashMap::Shared::SI32::arena_cap");
1004 10           REGISTER_KW(si32, add, "Data::HashMap::Shared::SI32::add");
1005 10           REGISTER_KW(si32, update, "Data::HashMap::Shared::SI32::update");
1006 10           REGISTER_KW(si32, swap, "Data::HashMap::Shared::SI32::swap");
1007 10           REGISTER_KW(si32, cas, "Data::HashMap::Shared::SI32::cas");
1008 10           REGISTER_KW(si32, persist, "Data::HashMap::Shared::SI32::persist");
1009 10           REGISTER_KW(si32, set_ttl, "Data::HashMap::Shared::SI32::set_ttl");
1010 10           REGISTER_KW(si, put, "Data::HashMap::Shared::SI::put");
1011 10           REGISTER_KW(si, get, "Data::HashMap::Shared::SI::get");
1012 10           REGISTER_KW(si, remove, "Data::HashMap::Shared::SI::remove");
1013 10           REGISTER_KW(si, exists, "Data::HashMap::Shared::SI::exists");
1014 10           REGISTER_KW(si, incr, "Data::HashMap::Shared::SI::incr");
1015 10           REGISTER_KW(si, decr, "Data::HashMap::Shared::SI::decr");
1016 10           REGISTER_KW(si, incr_by, "Data::HashMap::Shared::SI::incr_by");
1017 10           REGISTER_KW(si, size, "Data::HashMap::Shared::SI::size");
1018 10           REGISTER_KW(si, keys, "Data::HashMap::Shared::SI::keys");
1019 10           REGISTER_KW(si, values, "Data::HashMap::Shared::SI::values");
1020 10           REGISTER_KW(si, items, "Data::HashMap::Shared::SI::items");
1021 10           REGISTER_KW(si, each, "Data::HashMap::Shared::SI::each");
1022 10           REGISTER_KW(si, iter_reset, "Data::HashMap::Shared::SI::iter_reset");
1023 10           REGISTER_KW(si, clear, "Data::HashMap::Shared::SI::clear");
1024 10           REGISTER_KW(si, to_hash, "Data::HashMap::Shared::SI::to_hash");
1025 10           REGISTER_KW(si, max_entries, "Data::HashMap::Shared::SI::max_entries");
1026 10           REGISTER_KW(si, get_or_set, "Data::HashMap::Shared::SI::get_or_set");
1027 10           REGISTER_KW(si, put_ttl, "Data::HashMap::Shared::SI::put_ttl");
1028 10           REGISTER_KW(si, max_size, "Data::HashMap::Shared::SI::max_size");
1029 10           REGISTER_KW(si, ttl, "Data::HashMap::Shared::SI::ttl");
1030 10           REGISTER_KW(si, cursor, "Data::HashMap::Shared::SI::cursor");
1031 10           REGISTER_KW(si, cursor_next, "Data::HashMap::Shared::SI::Cursor::next");
1032 10           REGISTER_KW(si, cursor_reset, "Data::HashMap::Shared::SI::Cursor::reset");
1033 10           REGISTER_KW(si, cursor_seek, "Data::HashMap::Shared::SI::Cursor::seek");
1034 10           REGISTER_KW(si, ttl_remaining, "Data::HashMap::Shared::SI::ttl_remaining");
1035 10           REGISTER_KW(si, capacity, "Data::HashMap::Shared::SI::capacity");
1036 10           REGISTER_KW(si, tombstones, "Data::HashMap::Shared::SI::tombstones");
1037 10           REGISTER_KW(si, take, "Data::HashMap::Shared::SI::take");
1038 10           REGISTER_KW(si, pop, "Data::HashMap::Shared::SI::pop");
1039 10           REGISTER_KW(si, shift, "Data::HashMap::Shared::SI::shift");
1040 10           REGISTER_KW(si, drain, "Data::HashMap::Shared::SI::drain");
1041 10           REGISTER_KW(si, flush_expired, "Data::HashMap::Shared::SI::flush_expired");
1042 10           REGISTER_KW(si, flush_expired_partial, "Data::HashMap::Shared::SI::flush_expired_partial");
1043 10           REGISTER_KW(si, mmap_size, "Data::HashMap::Shared::SI::mmap_size");
1044 10           REGISTER_KW(si, touch, "Data::HashMap::Shared::SI::touch");
1045 10           REGISTER_KW(si, reserve, "Data::HashMap::Shared::SI::reserve");
1046 10           REGISTER_KW(si, stat_evictions, "Data::HashMap::Shared::SI::stat_evictions");
1047 10           REGISTER_KW(si, stat_expired, "Data::HashMap::Shared::SI::stat_expired");
1048 10           REGISTER_KW(si, stat_recoveries, "Data::HashMap::Shared::SI::stat_recoveries");
1049 10           REGISTER_KW(si, arena_used, "Data::HashMap::Shared::SI::arena_used");
1050 10           REGISTER_KW(si, arena_cap, "Data::HashMap::Shared::SI::arena_cap");
1051 10           REGISTER_KW(si, add, "Data::HashMap::Shared::SI::add");
1052 10           REGISTER_KW(si, update, "Data::HashMap::Shared::SI::update");
1053 10           REGISTER_KW(si, swap, "Data::HashMap::Shared::SI::swap");
1054 10           REGISTER_KW(si, cas, "Data::HashMap::Shared::SI::cas");
1055 10           REGISTER_KW(si, persist, "Data::HashMap::Shared::SI::persist");
1056 10           REGISTER_KW(si, set_ttl, "Data::HashMap::Shared::SI::set_ttl");
1057 10           REGISTER_KW(ss, put, "Data::HashMap::Shared::SS::put");
1058 10           REGISTER_KW(ss, get, "Data::HashMap::Shared::SS::get");
1059 10           REGISTER_KW(ss, remove, "Data::HashMap::Shared::SS::remove");
1060 10           REGISTER_KW(ss, exists, "Data::HashMap::Shared::SS::exists");
1061 10           REGISTER_KW(ss, size, "Data::HashMap::Shared::SS::size");
1062 10           REGISTER_KW(ss, keys, "Data::HashMap::Shared::SS::keys");
1063 10           REGISTER_KW(ss, values, "Data::HashMap::Shared::SS::values");
1064 10           REGISTER_KW(ss, items, "Data::HashMap::Shared::SS::items");
1065 10           REGISTER_KW(ss, each, "Data::HashMap::Shared::SS::each");
1066 10           REGISTER_KW(ss, iter_reset, "Data::HashMap::Shared::SS::iter_reset");
1067 10           REGISTER_KW(ss, clear, "Data::HashMap::Shared::SS::clear");
1068 10           REGISTER_KW(ss, to_hash, "Data::HashMap::Shared::SS::to_hash");
1069 10           REGISTER_KW(ss, max_entries, "Data::HashMap::Shared::SS::max_entries");
1070 10           REGISTER_KW(ss, get_or_set, "Data::HashMap::Shared::SS::get_or_set");
1071 10           REGISTER_KW(ss, put_ttl, "Data::HashMap::Shared::SS::put_ttl");
1072 10           REGISTER_KW(ss, max_size, "Data::HashMap::Shared::SS::max_size");
1073 10           REGISTER_KW(ss, ttl, "Data::HashMap::Shared::SS::ttl");
1074 10           REGISTER_KW(ss, cursor, "Data::HashMap::Shared::SS::cursor");
1075 10           REGISTER_KW(ss, cursor_next, "Data::HashMap::Shared::SS::Cursor::next");
1076 10           REGISTER_KW(ss, cursor_reset, "Data::HashMap::Shared::SS::Cursor::reset");
1077 10           REGISTER_KW(ss, cursor_seek, "Data::HashMap::Shared::SS::Cursor::seek");
1078 10           REGISTER_KW(ss, ttl_remaining, "Data::HashMap::Shared::SS::ttl_remaining");
1079 10           REGISTER_KW(ss, capacity, "Data::HashMap::Shared::SS::capacity");
1080 10           REGISTER_KW(ss, tombstones, "Data::HashMap::Shared::SS::tombstones");
1081 10           REGISTER_KW(ss, take, "Data::HashMap::Shared::SS::take");
1082 10           REGISTER_KW(ss, pop, "Data::HashMap::Shared::SS::pop");
1083 10           REGISTER_KW(ss, shift, "Data::HashMap::Shared::SS::shift");
1084 10           REGISTER_KW(ss, drain, "Data::HashMap::Shared::SS::drain");
1085 10           REGISTER_KW(ss, flush_expired, "Data::HashMap::Shared::SS::flush_expired");
1086 10           REGISTER_KW(ss, flush_expired_partial, "Data::HashMap::Shared::SS::flush_expired_partial");
1087 10           REGISTER_KW(ss, mmap_size, "Data::HashMap::Shared::SS::mmap_size");
1088 10           REGISTER_KW(ss, touch, "Data::HashMap::Shared::SS::touch");
1089 10           REGISTER_KW(ss, reserve, "Data::HashMap::Shared::SS::reserve");
1090 10           REGISTER_KW(ss, stat_evictions, "Data::HashMap::Shared::SS::stat_evictions");
1091 10           REGISTER_KW(ss, stat_expired, "Data::HashMap::Shared::SS::stat_expired");
1092 10           REGISTER_KW(ss, stat_recoveries, "Data::HashMap::Shared::SS::stat_recoveries");
1093 10           REGISTER_KW(ss, arena_used, "Data::HashMap::Shared::SS::arena_used");
1094 10           REGISTER_KW(ss, arena_cap, "Data::HashMap::Shared::SS::arena_cap");
1095 10           REGISTER_KW(ss, add, "Data::HashMap::Shared::SS::add");
1096 10           REGISTER_KW(ss, update, "Data::HashMap::Shared::SS::update");
1097 10           REGISTER_KW(ss, swap, "Data::HashMap::Shared::SS::swap");
1098 10           REGISTER_KW(ss, persist, "Data::HashMap::Shared::SS::persist");
1099 10           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