File Coverage

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