… | |
… | |
58 | |
58 | |
59 | typedef object_thawer &object_thawer_ref; |
59 | typedef object_thawer &object_thawer_ref; |
60 | typedef object_freezer &object_freezer_ref; |
60 | typedef object_freezer &object_freezer_ref; |
61 | |
61 | |
62 | typedef std::string std__string; |
62 | typedef std::string std__string; |
63 | |
|
|
64 | #if IVSIZE >= 8 |
|
|
65 | typedef IV val64; |
|
|
66 | # define newSVval64 newSViv |
|
|
67 | # define SvVAL64 SvIV |
|
|
68 | #else |
|
|
69 | typedef double val64; |
|
|
70 | # define newSVval64 newSVnv |
|
|
71 | # define SvVAL64 SvNV |
|
|
72 | #endif |
|
|
73 | |
63 | |
74 | static PerlInterpreter *perl; |
64 | static PerlInterpreter *perl; |
75 | |
65 | |
76 | tstamp NOW, runtime; |
66 | tstamp NOW, runtime; |
77 | |
67 | |
… | |
… | |
444 | inline SV *to_sv (living & v) { return to_sv (&v); } |
434 | inline SV *to_sv (living & v) { return to_sv (&v); } |
445 | |
435 | |
446 | inline SV *to_sv (const std::string & v) { return newSVpvn (v.data (), v.size ()); } |
436 | inline SV *to_sv (const std::string & v) { return newSVpvn (v.data (), v.size ()); } |
447 | inline SV *to_sv (const treasurelist *v) { return to_sv (v->name); } |
437 | inline SV *to_sv (const treasurelist *v) { return to_sv (v->name); } |
448 | |
438 | |
449 | inline SV *to_sv (UUID v) |
439 | inline SV *to_sv (UUID v) { return newSVpv (v.c_str (), 0); } |
450 | { |
|
|
451 | char buf[128]; |
|
|
452 | snprintf (buf, 128, "<1.%" PRIx64 ">", v.seq); |
|
|
453 | return newSVpv (buf, 0); |
|
|
454 | } |
|
|
455 | |
440 | |
456 | inline void sv_to (SV *sv, shstr &v) { v = SvOK (sv) ? SvPVutf8_nolen (sv) : 0; } |
441 | inline void sv_to (SV *sv, shstr &v) { v = SvOK (sv) ? SvPVutf8_nolen (sv) : 0; } |
457 | inline void sv_to (SV *sv, char * &v) { free (v); v = SvOK (sv) ? strdup (SvPV_nolen (sv)) : 0; } |
442 | inline void sv_to (SV *sv, char * &v) { free (v); v = SvOK (sv) ? strdup (SvPV_nolen (sv)) : 0; } |
458 | inline void sv_to (SV *sv, bool &v) { v = SvIV (sv); } |
443 | inline void sv_to (SV *sv, bool &v) { v = SvIV (sv); } |
459 | inline void sv_to (SV *sv, signed char &v) { v = SvIV (sv); } |
444 | inline void sv_to (SV *sv, signed char &v) { v = SvIV (sv); } |
… | |
… | |
501 | v.assign (data, len); |
486 | v.assign (data, len); |
502 | } |
487 | } |
503 | |
488 | |
504 | inline void sv_to (SV *sv, UUID &v) |
489 | inline void sv_to (SV *sv, UUID &v) |
505 | { |
490 | { |
506 | unsigned int version; |
491 | if (!v.parse (SvPV_nolen (sv))) |
507 | |
|
|
508 | if (2 != sscanf (SvPV_nolen (sv), "<%d.%" SCNx64 ">", &version, &v.seq) || 1 != version) |
|
|
509 | croak ("unparsable uuid: %s", SvPV_nolen (sv)); |
492 | croak ("unparsable uuid: %s", SvPV_nolen (sv)); |
510 | } |
493 | } |
511 | |
494 | |
512 | inline void sv_to (SV *sv, object::flags_t::reference v) { v = SvTRUE (sv); } |
495 | inline void sv_to (SV *sv, object::flags_t::reference v) { v = SvTRUE (sv); } |
513 | |
496 | |
… | |
… | |
1749 | RETVAL = newSVpv (resist_plus[atnr], 0); |
1732 | RETVAL = newSVpv (resist_plus[atnr], 0); |
1750 | else |
1733 | else |
1751 | XSRETURN_UNDEF; |
1734 | XSRETURN_UNDEF; |
1752 | OUTPUT: RETVAL |
1735 | OUTPUT: RETVAL |
1753 | |
1736 | |
1754 | SV * |
1737 | UUID |
1755 | uuid_cur () |
1738 | uuid_cur () |
1756 | CODE: |
1739 | CODE: |
1757 | RETVAL = to_sv (UUID::cur); |
1740 | RETVAL = UUID::cur; |
1758 | OUTPUT: |
1741 | OUTPUT: |
1759 | RETVAL |
1742 | RETVAL |
1760 | |
1743 | |
1761 | SV * |
1744 | UUID |
1762 | uuid_gen () |
1745 | uuid_gen () |
1763 | CODE: |
1746 | CODE: |
1764 | RETVAL = to_sv (UUID::gen ()); |
1747 | RETVAL = UUID::gen (); |
|
|
1748 | OUTPUT: |
|
|
1749 | RETVAL |
|
|
1750 | |
|
|
1751 | val64 |
|
|
1752 | uuid_seq (UUID uuid) |
|
|
1753 | CODE: |
|
|
1754 | RETVAL = uuid.seq; |
|
|
1755 | OUTPUT: |
|
|
1756 | RETVAL |
|
|
1757 | |
|
|
1758 | UUID |
|
|
1759 | uuid_str (val64 seq) |
|
|
1760 | CODE: |
|
|
1761 | RETVAL.seq = seq; |
1765 | OUTPUT: |
1762 | OUTPUT: |
1766 | RETVAL |
1763 | RETVAL |
1767 | |
1764 | |
1768 | void |
1765 | void |
1769 | coin_names () |
1766 | coin_names () |