… | |
… | |
439 | |
439 | |
440 | inline SV *to_sv (const std::string & v) { return newSVpvn (v.data (), v.size ()); } |
440 | inline SV *to_sv (const std::string & v) { return newSVpvn (v.data (), v.size ()); } |
441 | inline SV *to_sv (const treasurelist *v) { return to_sv (v->name); } |
441 | inline SV *to_sv (const treasurelist *v) { return to_sv (v->name); } |
442 | |
442 | |
443 | inline SV *to_sv (UUID v) { return newSVpv (v.c_str (), 0); } |
443 | inline SV *to_sv (UUID v) { return newSVpv (v.c_str (), 0); } |
|
|
444 | |
|
|
445 | inline SV *to_sv (dynbuf * v) |
|
|
446 | { |
|
|
447 | SV *sv = newSV (0); |
|
|
448 | |
|
|
449 | sv_upgrade (sv, SVt_PV); |
|
|
450 | SvGROW (sv, v->size () + 1); |
|
|
451 | SvPOK_only (sv); |
|
|
452 | v->linearise (SvPVX (sv)); |
|
|
453 | SvCUR_set (sv, v->size ()); |
|
|
454 | *SvEND (sv) = 0; |
|
|
455 | |
|
|
456 | return sv; |
|
|
457 | } |
|
|
458 | |
|
|
459 | inline SV *to_sv (dynbuf_text * v) |
|
|
460 | { |
|
|
461 | SV *sv = to_sv (static_cast<dynbuf *> (v)); |
|
|
462 | SvUTF8_on (sv); |
|
|
463 | return sv; |
|
|
464 | } |
444 | |
465 | |
445 | inline void sv_to (SV *sv, shstr &v) { v = SvOK (sv) ? SvPVutf8_nolen (sv) : 0; } |
466 | inline void sv_to (SV *sv, shstr &v) { v = SvOK (sv) ? SvPVutf8_nolen (sv) : 0; } |
446 | inline void sv_to (SV *sv, char * &v) { free (v); v = SvOK (sv) ? strdup (SvPV_nolen (sv)) : 0; } |
467 | inline void sv_to (SV *sv, char * &v) { free (v); v = SvOK (sv) ? strdup (SvPV_nolen (sv)) : 0; } |
447 | inline void sv_to (SV *sv, bool &v) { v = SvIV (sv); } |
468 | inline void sv_to (SV *sv, bool &v) { v = SvIV (sv); } |
448 | inline void sv_to (SV *sv, signed char &v) { v = SvIV (sv); } |
469 | inline void sv_to (SV *sv, signed char &v) { v = SvIV (sv); } |
… | |
… | |
941 | { |
962 | { |
942 | CALL_BEGIN (2); |
963 | CALL_BEGIN (2); |
943 | CALL_ARG (book); |
964 | CALL_ARG (book); |
944 | CALL_ARG (level); |
965 | CALL_ARG (level); |
945 | CALL_CALL ("ext::books::make_book", G_VOID); |
966 | CALL_CALL ("ext::books::make_book", G_VOID); |
946 | CALL_END; |
|
|
947 | } |
|
|
948 | |
|
|
949 | void |
|
|
950 | cfperl_expand_cfpod (player *pl, std::string &msg) |
|
|
951 | { |
|
|
952 | CALL_BEGIN (2); |
|
|
953 | CALL_ARG (pl); |
|
|
954 | CALL_ARG_SV (newSVpvn_utf8 (msg.data (), msg.size ())); |
|
|
955 | CALL_CALL ("cf::player::expand_cfpod", G_SCALAR); |
|
|
956 | |
|
|
957 | if (count) |
|
|
958 | { |
|
|
959 | STRLEN len; |
|
|
960 | char *data = SvPVutf8 (TOPs, len); |
|
|
961 | msg.assign (data, len); |
|
|
962 | } |
|
|
963 | |
|
|
964 | CALL_END; |
967 | CALL_END; |
965 | } |
968 | } |
966 | |
969 | |
967 | void |
970 | void |
968 | cfperl_send_msg (client *ns, int color, const char *type, const char *msg) |
971 | cfperl_send_msg (client *ns, int color, const char *type, const char *msg) |