… | |
… | |
382 | return SvPTR (sv, klass); |
382 | return SvPTR (sv, klass); |
383 | else |
383 | else |
384 | return 0; |
384 | return 0; |
385 | } |
385 | } |
386 | |
386 | |
|
|
387 | static inline SV * |
|
|
388 | newSVpvn_utf8 (const char *s, STRLEN l) |
|
|
389 | { |
|
|
390 | SV *sv = newSVpvn (s, l); |
|
|
391 | SvUTF8_on (sv); |
|
|
392 | return sv; |
|
|
393 | } |
|
|
394 | |
387 | inline SV *to_sv (const shstr & v) { return v ? newSVpvn ((const char *)v, v.length ()) : &PL_sv_undef; } |
395 | inline SV *to_sv (const shstr & v) { return v ? newSVpvn_utf8 ((const char *)v, v.length ()) : &PL_sv_undef; } |
388 | inline SV *to_sv (const char * v) { return newSVpv (v, 0); } |
396 | inline SV *to_sv (const char * v) { return newSVpv (v, 0); } |
389 | inline SV *to_sv (bool v) { return newSViv (v); } |
397 | inline SV *to_sv (bool v) { return newSViv (v); } |
390 | inline SV *to_sv ( signed char v) { return newSViv (v); } |
398 | inline SV *to_sv ( signed char v) { return newSViv (v); } |
391 | inline SV *to_sv (unsigned char v) { return newSViv (v); } |
399 | inline SV *to_sv (unsigned char v) { return newSViv (v); } |
392 | inline SV *to_sv ( signed short v) { return newSViv (v); } |
400 | inline SV *to_sv ( signed short v) { return newSViv (v); } |
… | |
… | |
419 | char buf[128]; |
427 | char buf[128]; |
420 | snprintf (buf, 128, "<1.%" PRIx64 ">", v.seq); |
428 | snprintf (buf, 128, "<1.%" PRIx64 ">", v.seq); |
421 | return newSVpv (buf, 0); |
429 | return newSVpv (buf, 0); |
422 | } |
430 | } |
423 | |
431 | |
424 | inline void sv_to (SV *sv, shstr &v) { v = SvOK (sv) ? SvPV_nolen (sv) : 0; } |
432 | inline void sv_to (SV *sv, shstr &v) { v = SvOK (sv) ? SvPVutf8_nolen (sv) : 0; } |
425 | inline void sv_to (SV *sv, char * &v) { free (v); v = SvOK (sv) ? strdup (SvPV_nolen (sv)) : 0; } |
433 | inline void sv_to (SV *sv, char * &v) { free (v); v = SvOK (sv) ? strdup (SvPV_nolen (sv)) : 0; } |
426 | inline void sv_to (SV *sv, bool &v) { v = SvIV (sv); } |
434 | inline void sv_to (SV *sv, bool &v) { v = SvIV (sv); } |
427 | inline void sv_to (SV *sv, signed char &v) { v = SvIV (sv); } |
435 | inline void sv_to (SV *sv, signed char &v) { v = SvIV (sv); } |
428 | inline void sv_to (SV *sv, unsigned char &v) { v = SvIV (sv); } |
436 | inline void sv_to (SV *sv, unsigned char &v) { v = SvIV (sv); } |
429 | inline void sv_to (SV *sv, signed short &v) { v = SvIV (sv); } |
437 | inline void sv_to (SV *sv, signed short &v) { v = SvIV (sv); } |