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.387 by root, Wed Jun 30 01:32:57 2010 UTC vs.
Revision 1.388 by root, Wed Jun 30 01:57:54 2010 UTC

354////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 354//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
355 355
356static SV * 356static SV *
357newSVptr (void *ptr, HV *stash, HV *hv) 357newSVptr (void *ptr, HV *stash, HV *hv)
358{ 358{
359 SV *sv;
360
361 if (!ptr) 359 if (!ptr)
362 return newSV (0); 360 return newSV (0);
363 361
364 sv_magicext ((SV *)hv, 0, PERL_MAGIC_ext, 0, (char *)ptr, 0); 362 sv_magicext ((SV *)hv, 0, PERL_MAGIC_ext, 0, (char *)ptr, 0);
365 return sv_bless (newRV_noinc ((SV *)hv), stash); 363 return sv_bless (newRV_noinc ((SV *)hv), stash);
366} 364}
367 365
368static SV * 366static SV * noinline
369newSVptr (void *ptr, HV *stash) 367newSVptr (void *ptr, HV *stash)
370{ 368{
371 return newSVptr (ptr, stash, newHV ()); 369 return newSVptr (ptr, stash, newHV ());
372} 370}
373 371
388 return 0; 386 return 0;
389} 387}
390 388
391MGVTBL attachable::vtbl = {0, 0, 0, 0, attachable_free}; 389MGVTBL attachable::vtbl = {0, 0, 0, 0, attachable_free};
392 390
393static SV * 391static SV * noinline
394newSVattachable (attachable *obj, HV *stash) 392newSVattachable (attachable *obj, HV *stash)
395{ 393{
396 if (!obj) 394 if (!obj)
397 return newSV (0); 395 return newSV (0);
398 396
532static inline SV *to_sv (unsigned long long v) { return newSVval64 (v); } 530static inline SV *to_sv (unsigned long long v) { return newSVval64 (v); }
533static inline SV *to_sv (float v) { return newSVnv (v); } 531static inline SV *to_sv (float v) { return newSVnv (v); }
534static inline SV *to_sv (double v) { return newSVnv (v); } 532static inline SV *to_sv (double v) { return newSVnv (v); }
535static inline SV *to_sv (client * v) { return newSVattachable (v, stash_cf_client_wrap); } 533static inline SV *to_sv (client * v) { return newSVattachable (v, stash_cf_client_wrap); }
536static inline SV *to_sv (player * v) { return newSVattachable (v, stash_cf_player_wrap); } 534static inline SV *to_sv (player * v) { return newSVattachable (v, stash_cf_player_wrap); }
535// gcc dislikes noilnine on to_sv
537static inline SV *to_sv (object * v) { return newSVattachable (v, v && v->type == PLAYER ? stash_cf_object_player_wrap : stash_cf_object_wrap); } 536static noinline SV *to_sv_ni (object * v) { return newSVattachable (v, v && v->type == PLAYER ? stash_cf_object_player_wrap : stash_cf_object_wrap); }
537static inline SV *to_sv (object * v) { return to_sv_ni (v); }
538static inline SV *to_sv (maptile * v) { return newSVattachable (v, stash_cf_map_wrap); } 538static inline SV *to_sv (maptile * v) { return newSVattachable (v, stash_cf_map_wrap); }
539static inline SV *to_sv (archetype * v) { return newSVattachable (v, stash_cf_arch_wrap); } 539static inline SV *to_sv (archetype * v) { return newSVattachable (v, stash_cf_arch_wrap); }
540static inline SV *to_sv (region * v) { return newSVattachable (v, stash_cf_region_wrap); } 540static inline SV *to_sv (region * v) { return newSVattachable (v, stash_cf_region_wrap); }
541static inline SV *to_sv (partylist * v) { return newSVptr (v, stash_cf_party_wrap); } 541static inline SV *to_sv (partylist * v) { return newSVptr (v, stash_cf_party_wrap); }
542static inline SV *to_sv (living * v) { return newSVptr (v, stash_cf_living_wrap); } 542static inline SV *to_sv (living * v) { return newSVptr (v, stash_cf_living_wrap); }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines