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.272 by root, Wed Apr 2 11:13:56 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
1534 } 1517 }
1535 1518
1536 SvCUR_set (data_sv, dst - SvPVX (data_sv)); 1519 SvCUR_set (data_sv, dst - SvPVX (data_sv));
1537} 1520}
1538 1521
1539void evthread_start () 1522void evthread_start (int aiofd)
1540 1523
1541void cede_to_tick () 1524void cede_to_tick ()
1542 CODE: 1525 CODE:
1543 coroapi::cede_to_tick (); 1526 coroapi::cede_to_tick ();
1544 1527
1748 if (atnr >= 0 && atnr < NROFATTACKS) 1731 if (atnr >= 0 && atnr < NROFATTACKS)
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
1736
1737UUID
1738uuid_cur ()
1739 CODE:
1740 RETVAL = UUID::cur;
1741 OUTPUT:
1742 RETVAL
1743
1744UUID
1745uuid_gen ()
1746 CODE:
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;
1762 OUTPUT:
1763 RETVAL
1764
1765void
1766coin_names ()
1767 PPCODE:
1768 EXTEND (SP, NUM_COINS);
1769 for (int i = 0; i < NUM_COINS; ++i)
1770 PUSHs (sv_2mortal (newSVpv (coins [i], 0)));
1771
1772void
1773coin_archetypes ()
1774 PPCODE:
1775 EXTEND (SP, NUM_COINS);
1776 for (int i = 0; i < NUM_COINS; ++i)
1777 PUSHs (sv_2mortal (to_sv (archetype::find (coins [i]))));
1753 1778
1754bool 1779bool
1755load_resource_file (octet_string filename) 1780load_resource_file (octet_string filename)
1756 1781
1757MODULE = cf PACKAGE = cf::attachable 1782MODULE = cf PACKAGE = cf::attachable

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines