Branch Coverage

xs/ss.xs
Criterion Covered Total %
branch 294 656 44.8


line true false branch
7 47 5 char errbuf[SHM_ERR_BUFLEN]; const char* path = SvOK(path_sv) ? SvPV_nolen(path_sv) : NULL; ShmHandle* map = shm_ss_create(path, (uint32_t)max_entries, (uint32_t)lru_max, (uint32_t)ttl_default, (uint32_t)lru_skip, errbuf);
8 3 49 if (!map) croak("HashMap::Shared::SS: %s", errbuf[0] ? errbuf : "unknown error");
3 0 if (!map) croak("HashMap::Shared::SS: %s", errbuf[0] ? errbuf : "unknown error");
17 0 5 if (!map) croak("HashMap::Shared::SS: %s", errbuf[0] ? errbuf : "unknown error");
0 0 if (!map) croak("HashMap::Shared::SS: %s", errbuf[0] ? errbuf : "unknown error");
27 1 0 const char* name = SvOK(name_sv) ? SvPV_nolen(name_sv) : NULL;
29 0 1 if (!map) croak("Data::HashMap::Shared::SS: %s", errbuf[0] ? errbuf : "unknown error");
0 0 if (!map) croak("Data::HashMap::Shared::SS: %s", errbuf[0] ? errbuf : "unknown error");
39 0 1 if (!map) croak("Data::HashMap::Shared::SS: %s", errbuf[0] ? errbuf : "unknown error");
0 0 if (!map) croak("Data::HashMap::Shared::SS: %s", errbuf[0] ? errbuf : "unknown error");
47 1 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
48 0 1 RETVAL = h->backing_fd;
56 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
57 0 0 if (shm_msync(h) != 0) croak("Data::HashMap::Shared::SS sync: %s", strerror(errno));
62 0 56 if (!SvROK(self_sv)) return;
64 0 56 if (!h) return;
71 3081 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3081 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3081 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
72 0 3081 EXTRACT_STR_KEY(key_sv);
73 0 3081 EXTRACT_STR_VAL(value);
74 3079 2 RETVAL = shm_ss_put(h, _kstr, (uint32_t)_klen, _kutf8, _vstr, (uint32_t)_vlen, _vutf8);
81 3 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
82 0 3 if ((items - 1) % 2 != 0) croak("set_multi requires even number of arguments (key, value pairs)");
84 1 2 if (h->shard_handles) {
85 3 1 for (int i = 1; i < items; i += 2) {
96 6 2 for (int i = 1; i < items; i += 2) {
99 0 6 if (_kl > SHM_MAX_STR_LEN) { shm_seqlock_write_end(&hdr->seq); shm_rwlock_wrunlock(hdr); croak("key too long"); }
102 0 6 if (_vl > SHM_MAX_STR_LEN) { shm_seqlock_write_end(&hdr->seq); shm_rwlock_wrunlock(hdr); croak("value too long"); }
108 0 3 RETVAL = count;
115 3 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
117 0 3 if (nkeys == 0) XSRETURN_EMPTY;
118 3 0 EXTEND(SP, nkeys);
0 3 EXTEND(SP, nkeys);
119 1 2 if (h->shard_handles) {
120 4 1 for (int i = 0; i < nkeys; i++) {
124 3 1 if (shm_ss_get(h, _ks, (uint32_t)_kl, _ku, &out_s, &out_l, &out_u)) {
126 0 3 if (out_u) SvUTF8_on(sv);
135 0 2 uint32_t now = h->expires_at ? shm_now() : 0;
138 9 2 for (int i = 0; i < nkeys; i++) {
146 13 0 for (uint32_t j = 0; j <= mask; j++) {
149 2 11 if (st == SHM_EMPTY) break;
150 4 7 if (st != tag) continue;
151 7 0 if (shm_ss__key_eq_str(&nodes[idx], arena, _ks, (uint32_t)_kl, _ku)) {
152 0 7 if (h->expires_at && h->expires_at[idx] && now >= h->expires_at[idx]) break;
0 0 if (h->expires_at && h->expires_at[idx] && now >= h->expires_at[idx]) break;
0 0 if (h->expires_at && h->expires_at[idx] && now >= h->expires_at[idx]) break;
156 7 2 if (found) {
160 0 7 if (SHM_UNPACK_UTF8(nodes[vidx].val_len)) SvUTF8_on(sv);
164 7 2 if (i + 1 < nkeys) {
175 1 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
196 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
197 0 0 EXTRACT_STR_KEY(key_sv);
198 0 0 RETVAL = shm_ss_persist(h, _kstr, (uint32_t)_klen, _kutf8);
205 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
206 0 0 EXTRACT_STR_KEY(key_sv);
207 0 0 RETVAL = shm_ss_set_ttl(h, _kstr, (uint32_t)_klen, _kutf8, (uint32_t)ttl_sec);
214 1 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
215 0 1 EXTRACT_STR_KEY(key_sv);
216 0 1 EXTRACT_STR_VAL(value);
217 0 1 REQUIRE_TTL(h);
0 1 REQUIRE_TTL(h);
218 1 0 RETVAL = shm_ss_put_ttl(h, _kstr, (uint32_t)_klen, _kutf8, _vstr, (uint32_t)_vlen, _vutf8, (uint32_t)ttl_sec);
225 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
226 0 0 RETVAL = (UV)shm_ss_max_size(h);
233 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
234 0 0 RETVAL = (UV)shm_ss_ttl(h);
241 2546 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2546 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2546 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
242 0 2546 EXTRACT_STR_KEY(key_sv);
244 5 2541 if (!shm_ss_get(h, _kstr, (uint32_t)_klen, _kutf8, &val, &val_len, &val_utf8))
247 4 2537 if (val_utf8) SvUTF8_on(RETVAL);
254 5 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 5 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 5 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
255 0 5 EXTRACT_STR_KEY(key_sv);
256 5 0 RETVAL = shm_ss_remove(h, _kstr, (uint32_t)_klen, _kutf8);
263 5 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 5 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 5 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
264 0 5 EXTRACT_STR_KEY(key_sv);
265 5 0 RETVAL = shm_ss_exists(h, _kstr, (uint32_t)_klen, _kutf8);
272 15 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 15 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 15 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
273 0 15 RETVAL = (UV)shm_ss_size(h);
280 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
281 0 0 RETVAL = (UV)shm_ss_max_entries(h);
288 3 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
289 1 2 uint32_t ns = h->shard_handles ? h->num_shards : 1;
290 6 3 for (uint32_t si = 0; si < ns; si++) {
291 4 2 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
294 0 6 uint32_t now = sh->expires_at ? shm_now() : 0;
296 0 6 EXTEND(SP, hdr->size);
297 96 6 for (uint32_t i = 0; i < hdr->table_cap; i++) {
298 34 62 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 34 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
302 1 33 if (SHM_UNPACK_UTF8(nodes[i].key_len)) SvUTF8_on(sv);
303 0 34 mXPUSHs(sv);
311 2 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
312 1 1 uint32_t ns = h->shard_handles ? h->num_shards : 1;
313 5 2 for (uint32_t si = 0; si < ns; si++) {
314 4 1 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
317 0 5 uint32_t now = sh->expires_at ? shm_now() : 0;
319 0 5 EXTEND(SP, hdr->size);
320 80 5 for (uint32_t i = 0; i < hdr->table_cap; i++) {
321 33 47 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 33 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
325 0 33 if (SHM_UNPACK_UTF8(nodes[i].val_len)) SvUTF8_on(sv);
326 0 33 mXPUSHs(sv);
334 1 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
335 0 1 uint32_t ns = h->shard_handles ? h->num_shards : 1;
336 1 1 for (uint32_t si = 0; si < ns; si++) {
337 0 1 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
340 0 1 uint32_t now = sh->expires_at ? shm_now() : 0;
342 0 1 EXTEND(SP, hdr->size * 2);
343 16 1 for (uint32_t i = 0; i < hdr->table_cap; i++) {
344 3 13 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 3 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
348 0 3 if (SHM_UNPACK_UTF8(nodes[i].key_len)) SvUTF8_on(ksv);
349 0 3 mXPUSHs(ksv);
353 0 3 if (SHM_UNPACK_UTF8(nodes[i].val_len)) SvUTF8_on(vsv);
354 0 3 mXPUSHs(vsv);
363 3 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
367 2 1 if (shm_ss_each(h, &out_key, &out_klen, &out_kutf8, &out_val, &out_vlen, &out_vutf8)) {
368 0 2 EXTEND(SP, 2);
370 0 2 if (out_kutf8) SvUTF8_on(ksv);
371 0 2 mXPUSHs(ksv);
373 0 2 if (out_vutf8) SvUTF8_on(vsv);
374 0 2 mXPUSHs(vsv);
383 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
390 1 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
396 2 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
398 1 1 uint32_t ns = h->shard_handles ? h->num_shards : 1;
399 5 2 for (uint32_t si = 0; si < ns; si++) {
400 4 1 ShmHandle *sh = h->shard_handles ? h->shard_handles[si] : h;
403 0 5 uint32_t now = sh->expires_at ? shm_now() : 0;
405 80 5 for (uint32_t i = 0; i < hdr->table_cap; i++) {
406 32 48 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 32 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
0 0 if (SHM_IS_LIVE(sh->states[i]) && !SHM_IS_EXPIRED(sh, i, now)) {
413 0 32 if (SHM_UNPACK_UTF8(nodes[i].val_len)) SvUTF8_on(val);
414 0 32 if (!hv_store(hv, kp,
0 32 if (!hv_store(hv, kp,
426 8 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 8 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 8 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
427 0 8 EXTRACT_STR_KEY(key_sv);
429 0 8 EXTRACT_STR_VAL(default_sv);
431 0 8 if (!rc) XSRETURN_UNDEF;
433 0 8 if (out_utf8) SvUTF8_on(RETVAL);
440 2 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
441 0 2 EXTRACT_STR_KEY(key_sv);
443 1 1 if (remaining < 0) XSRETURN_UNDEF;
451 2 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
452 0 2 RETVAL = (UV)shm_ss_capacity(h);
459 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
460 0 0 RETVAL = (UV)shm_ss_tombstones(h);
467 4 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 4 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 4 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
469 0 4 if (!c) croak("Failed to allocate cursor");
477 6 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 6 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 6 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
478 0 6 EXTRACT_STR_KEY(key_sv);
480 1 5 if (!shm_ss_take(h, _kstr, (uint32_t)_klen, _kutf8, &out_str, &out_len, &out_utf8)) XSRETURN_UNDEF;
482 2 3 if (out_utf8) SvUTF8_on(RETVAL);
489 2 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
492 0 2 if (!shm_ss_pop(h, &out_key, &out_klen, &out_kutf8, &out_val, &out_vlen, &out_vutf8)) XSRETURN_EMPTY;
493 0 2 EXTEND(SP, 2);
495 0 2 if (out_kutf8) SvUTF8_on(ksv);
498 0 2 if (out_vutf8) SvUTF8_on(vsv);
504 1 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
507 0 1 if (!shm_ss_shift(h, &out_key, &out_klen, &out_kutf8, &out_val, &out_vlen, &out_vutf8)) XSRETURN_EMPTY;
508 0 1 EXTEND(SP, 2);
510 0 1 if (out_kutf8) SvUTF8_on(ksv);
513 0 1 if (out_vutf8) SvUTF8_on(vsv);
519 3 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 3 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
520 0 3 if (limit == 0) XSRETURN_EMPTY;
522 0 3 Newxz(entries, limit, shm_ss_drain_entry);
528 0 3 EXTEND(SP, n * 2);
529 9 3 for (uint32_t i = 0; i < n; i++) {
531 0 9 if (entries[i].key_utf8) SvUTF8_on(ksv);
534 0 9 if (entries[i].val_utf8) SvUTF8_on(vsv);
537 3 0 if (buf) free(buf);
543 1 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
544 0 1 RETVAL = (UV)shm_ss_flush_expired(h);
551 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
554 0 0 EXTEND(SP, 2);
561 1 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
569 2 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
570 0 2 EXTRACT_STR_KEY(key_sv);
571 1 1 RETVAL = shm_ss_touch(h, _kstr, (uint32_t)_klen, _kutf8);
578 1 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
579 1 0 RETVAL = shm_ss_reserve(h, (uint32_t)target);
586 2 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
594 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
602 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
603 0 0 RETVAL = (UV)shm_ss_stat_recoveries(h);
610 2 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
618 1 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 1 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
626 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
627 0 0 EXTRACT_STR_KEY(key_sv);
628 0 0 EXTRACT_STR_VAL(val_sv);
629 0 0 RETVAL = shm_ss_add(h, _kstr, (uint32_t)_klen, _kutf8, _vstr, (uint32_t)_vlen, _vutf8);
636 0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
637 0 0 EXTRACT_STR_KEY(key_sv);
638 0 0 EXTRACT_STR_VAL(val_sv);
639 0 0 RETVAL = shm_ss_update(h, _kstr, (uint32_t)_klen, _kutf8, _vstr, (uint32_t)_vlen, _vutf8);
646 4 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 4 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 4 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
647 0 4 EXTRACT_STR_KEY(key_sv);
648 0 4 EXTRACT_STR_VAL(val_sv);
651 2 2 if (rc != 1) XSRETURN_UNDEF;
653 0 2 if (out_u) SvUTF8_on(RETVAL);
660 2 0 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
0 2 EXTRACT_MAP("Data::HashMap::Shared::SS", self_sv);
661 1 1 RETVAL = h->path ? newSVpv(h->path, 0) : &PL_sv_undef;
669 0 0 if (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) {
0 0 if (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) {
671 0 0 if (!h) croak("Attempted to use a destroyed Data::HashMap::Shared::SS object");
674 0 0 if (items < 2) croak("Usage: Data::HashMap::Shared::SS->unlink($path)");
677 0 0 RETVAL = (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) ?
0 0 RETVAL = (SvROK(self_or_class) && SvOBJECT(SvRV(self_or_class))) ?
678 0 0 shm_unlink_sharded(INT2PTR(ShmHandle*, SvIV(SvRV(self_or_class)))) :
689 0 4 if (!SvROK(self_sv)) return;
691 0 4 if (!c) return;
694 4 0 if (h) shm_ss_flush_deferred(h);
700 29 0 EXTRACT_CURSOR("Data::HashMap::Shared::SS::Cursor", self_sv);
0 29 EXTRACT_CURSOR("Data::HashMap::Shared::SS::Cursor", self_sv);
0 29 EXTRACT_CURSOR("Data::HashMap::Shared::SS::Cursor", self_sv);
704 27 2 if (shm_ss_cursor_next(c, &out_key, &out_klen, &out_kutf8, &out_val, &out_vlen, &out_vutf8)) {
705 0 27 EXTEND(SP, 2);
707 0 27 if (out_kutf8) SvUTF8_on(ksv);
708 0 27 mXPUSHs(ksv);
710 0 27 if (out_vutf8) SvUTF8_on(vsv);
711 0 27 mXPUSHs(vsv);
719 0 0 EXTRACT_CURSOR("Data::HashMap::Shared::SS::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::SS::Cursor", self_sv);
0 0 EXTRACT_CURSOR("Data::HashMap::Shared::SS::Cursor", self_sv);
725 3 0 EXTRACT_CURSOR("Data::HashMap::Shared::SS::Cursor", self_sv);
0 3 EXTRACT_CURSOR("Data::HashMap::Shared::SS::Cursor", self_sv);
0 3 EXTRACT_CURSOR("Data::HashMap::Shared::SS::Cursor", self_sv);
726 0 3 EXTRACT_STR_KEY(key_sv);
727 2 1 RETVAL = shm_ss_cursor_seek(c, _kstr, (uint32_t)_klen, _kutf8);