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.175 by root, Tue Mar 6 19:02:36 2007 UTC vs.
Revision 1.176 by root, Sun Mar 11 02:12:45 2007 UTC

349inline SV *to_sv (living * v) { return newSVptr (v, stash_cf_living_wrap); } 349inline SV *to_sv (living * v) { return newSVptr (v, stash_cf_living_wrap); }
350 350
351inline SV *to_sv (object & v) { return to_sv (&v); } 351inline SV *to_sv (object & v) { return to_sv (&v); }
352inline SV *to_sv (living & v) { return to_sv (&v); } 352inline SV *to_sv (living & v) { return to_sv (&v); }
353 353
354inline SV *to_sv (facetile * v) { return to_sv (v->name); } 354//inline SV *to_sv (faceinfo * v) { return to_sv (v->name); }
355inline SV *to_sv (treasurelist * v) { return to_sv (v->name); } 355inline SV *to_sv (treasurelist * v) { return to_sv (v->name); }
356inline SV *to_sv (std::string & v) { return newSVpvn (v.data (), v.size ()); }
356 357
357inline SV *to_sv (UUID v) 358inline SV *to_sv (UUID v)
358{ 359{
359 char buf[128]; 360 char buf[128];
360 snprintf (buf, 128, "<1.%" PRIx64 ">", v.seq); 361 snprintf (buf, 128, "<1.%" PRIx64 ">", v.seq);
384inline void sv_to (SV *sv, attachable * &v) { v = (attachable *)SvPTR_ornull (sv, "cf::attachable"); } 385inline void sv_to (SV *sv, attachable * &v) { v = (attachable *)SvPTR_ornull (sv, "cf::attachable"); }
385inline void sv_to (SV *sv, partylist * &v) { v = (partylist *)SvPTR_ornull (sv, "cf::party"); } 386inline void sv_to (SV *sv, partylist * &v) { v = (partylist *)SvPTR_ornull (sv, "cf::party"); }
386inline void sv_to (SV *sv, region * &v) { v = (region *)SvPTR_ornull (sv, "cf::region"); } 387inline void sv_to (SV *sv, region * &v) { v = (region *)SvPTR_ornull (sv, "cf::region"); }
387inline void sv_to (SV *sv, living * &v) { v = (living *)SvPTR_ornull (sv, "cf::living"); } 388inline void sv_to (SV *sv, living * &v) { v = (living *)SvPTR_ornull (sv, "cf::living"); }
388 389
389inline void sv_to (SV *sv, facetile * &v) { v = &new_faces[FindFace (SvPV_nolen (sv), 0)]; } 390//inline void sv_to (SV *sv, faceinfo * &v) { v = &faces [face_find (SvPV_nolen (sv), 0)]; }
390inline void sv_to (SV *sv, treasurelist * &v) { v = find_treasurelist (SvPV_nolen (sv)); } 391inline void sv_to (SV *sv, treasurelist * &v) { v = find_treasurelist (SvPV_nolen (sv)); }
391 392
392template<class T> 393template<class T>
393inline void sv_to (SV *sv, refptr<T> &v) { T *tmp; sv_to (sv, tmp); v = tmp; } 394inline void sv_to (SV *sv, refptr<T> &v) { T *tmp; sv_to (sv, tmp); v = tmp; }
394 395
398inline void sv_to (SV *sv, rangetype &v) { v = (rangetype) SvIV (sv); } 399inline void sv_to (SV *sv, rangetype &v) { v = (rangetype) SvIV (sv); }
399inline void sv_to (SV *sv, bowtype_t &v) { v = (bowtype_t) SvIV (sv); } 400inline void sv_to (SV *sv, bowtype_t &v) { v = (bowtype_t) SvIV (sv); }
400inline void sv_to (SV *sv, petmode_t &v) { v = (petmode_t) SvIV (sv); } 401inline void sv_to (SV *sv, petmode_t &v) { v = (petmode_t) SvIV (sv); }
401inline void sv_to (SV *sv, usekeytype &v) { v = (usekeytype) SvIV (sv); } 402inline void sv_to (SV *sv, usekeytype &v) { v = (usekeytype) SvIV (sv); }
402inline void sv_to (SV *sv, unapplymode &v) { v = (unapplymode) SvIV (sv); } 403inline void sv_to (SV *sv, unapplymode &v) { v = (unapplymode) SvIV (sv); }
404
405inline void sv_to (SV *sv, std::string &v)
406{
407 STRLEN len;
408 char *data = SvPVbyte (sv, len);
409 v.assign (data, len);
410}
403 411
404inline void sv_to (SV *sv, UUID &v) 412inline void sv_to (SV *sv, UUID &v)
405{ 413{
406 unsigned int version; 414 unsigned int version;
407 415
2506 char *buf = SvPVbyte (packet, len); 2514 char *buf = SvPVbyte (packet, len);
2507 2515
2508 THIS->send_packet (buf, len); 2516 THIS->send_packet (buf, len);
2509} 2517}
2510 2518
2519MODULE = cf PACKAGE = cf::face PREFIX = face_
2520
2521INCLUDE: $PERL $srcdir/genacc faceset ../include/face.h |
2522
2523int face_find (const char *name, int defidx = 0)
2524
2525int alloc (const char *name)
2526 CODE:
2527{
2528 do
2529 {
2530 RETVAL = faces.size ();
2531 faces.resize (RETVAL + 1);
2532 face32.resize (RETVAL + 1);
2533 face64.resize (RETVAL + 1);
2534 }
2535 while (!RETVAL); // crude way to leave index 0
2536
2537 faces [RETVAL].name = name;
2538 facehash.insert (std::make_pair (faces [RETVAL].name, RETVAL));
2539
2540 if (!strcmp (name, BLANK_FACE_NAME)) blank_face = RETVAL;
2541 if (!strcmp (name, EMPTY_FACE_NAME)) empty_face = RETVAL;
2542}
2543 OUTPUT: RETVAL
2544
2545void set (int idx, int visibility, int magicmap)
2546 CODE:
2547 faces [idx].visibility = visibility;
2548 faces [idx].magicmap = magicmap;
2549
2550void set_data (int idx, int faceset, SV *data, SV *chksum)
2551 CODE:
2552 facedata *d = face_data (idx, faceset);
2553 assert (sv_len (chksum) == CHKSUM_SIZE);
2554 sv_to (data, d->data); memcpy (d->chksum, SvPVbyte_nolen (chksum), CHKSUM_SIZE);
2555

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines