ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/cfperl.xs
(Generate patch)

Comparing deliantra/server/server/cfperl.xs (file contents):
Revision 1.274 by root, Thu Apr 10 15:35:16 2008 UTC vs.
Revision 1.275 by root, Fri Apr 11 13:59:06 2008 UTC

58 58
59typedef object_thawer &object_thawer_ref; 59typedef object_thawer &object_thawer_ref;
60typedef object_freezer &object_freezer_ref; 60typedef object_freezer &object_freezer_ref;
61 61
62typedef std::string std__string; 62typedef 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
74static PerlInterpreter *perl; 64static PerlInterpreter *perl;
75 65
76tstamp NOW, runtime; 66tstamp NOW, runtime;
77 67
444inline SV *to_sv (living & v) { return to_sv (&v); } 434inline SV *to_sv (living & v) { return to_sv (&v); }
445 435
446inline SV *to_sv (const std::string & v) { return newSVpvn (v.data (), v.size ()); } 436inline SV *to_sv (const std::string & v) { return newSVpvn (v.data (), v.size ()); }
447inline SV *to_sv (const treasurelist *v) { return to_sv (v->name); } 437inline SV *to_sv (const treasurelist *v) { return to_sv (v->name); }
448 438
449inline SV *to_sv (UUID v) 439inline 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
456inline void sv_to (SV *sv, shstr &v) { v = SvOK (sv) ? SvPVutf8_nolen (sv) : 0; } 441inline void sv_to (SV *sv, shstr &v) { v = SvOK (sv) ? SvPVutf8_nolen (sv) : 0; }
457inline void sv_to (SV *sv, char * &v) { free (v); v = SvOK (sv) ? strdup (SvPV_nolen (sv)) : 0; } 442inline void sv_to (SV *sv, char * &v) { free (v); v = SvOK (sv) ? strdup (SvPV_nolen (sv)) : 0; }
458inline void sv_to (SV *sv, bool &v) { v = SvIV (sv); } 443inline void sv_to (SV *sv, bool &v) { v = SvIV (sv); }
459inline void sv_to (SV *sv, signed char &v) { v = SvIV (sv); } 444inline 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
504inline void sv_to (SV *sv, UUID &v) 489inline 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
512inline void sv_to (SV *sv, object::flags_t::reference v) { v = SvTRUE (sv); } 495inline 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
1754SV * 1737UUID
1755uuid_cur () 1738uuid_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
1761SV * 1744UUID
1762uuid_gen () 1745uuid_gen ()
1763 CODE: 1746 CODE:
1764 RETVAL = to_sv (UUID::gen ()); 1747 RETVAL = UUID::gen ();
1748 OUTPUT:
1749 RETVAL
1750
1751val64
1752uuid_seq (UUID uuid)
1753 CODE:
1754 RETVAL = uuid.seq;
1755 OUTPUT:
1756 RETVAL
1757
1758UUID
1759uuid_str (val64 seq)
1760 CODE:
1761 RETVAL.seq = seq;
1765 OUTPUT: 1762 OUTPUT:
1766 RETVAL 1763 RETVAL
1767 1764
1768void 1765void
1769coin_names () 1766coin_names ()

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines