Blame parts/inc/SvPV

Packit 7d6a7d
################################################################################
Packit 7d6a7d
##
Packit 7d6a7d
##  Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
Packit 7d6a7d
##  Version 2.x, Copyright (C) 2001, Paul Marquess.
Packit 7d6a7d
##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
Packit 7d6a7d
##
Packit 7d6a7d
##  This program is free software; you can redistribute it and/or
Packit 7d6a7d
##  modify it under the same terms as Perl itself.
Packit 7d6a7d
##
Packit 7d6a7d
################################################################################
Packit 7d6a7d
Packit 7d6a7d
=provides
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__
Packit 7d6a7d
SvPVbyte
Packit 7d6a7d
sv_2pvbyte
Packit 7d6a7d
sv_2pv_flags
Packit 7d6a7d
sv_pvn_force_flags
Packit 7d6a7d
Packit 7d6a7d
=dontwarn
Packit 7d6a7d
Packit 7d6a7d
NEED_sv_2pv_flags
Packit 7d6a7d
NEED_sv_2pv_flags_GLOBAL
Packit 7d6a7d
DPPP_SVPV_NOLEN_LP_ARG
Packit 7d6a7d
Packit 7d6a7d
=implementation
Packit 7d6a7d
Packit 7d6a7d
/* Backwards compatibility stuff... :-( */
Packit 7d6a7d
#if !defined(NEED_sv_2pv_flags) && defined(NEED_sv_2pv_nolen)
Packit 7d6a7d
#  define NEED_sv_2pv_flags
Packit 7d6a7d
#endif
Packit 7d6a7d
#if !defined(NEED_sv_2pv_flags_GLOBAL) && defined(NEED_sv_2pv_nolen_GLOBAL)
Packit 7d6a7d
#  define NEED_sv_2pv_flags_GLOBAL
Packit 7d6a7d
#endif
Packit 7d6a7d
Packit 7d6a7d
/* Hint: sv_2pv_nolen
Packit 7d6a7d
 * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen().
Packit 7d6a7d
 */
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  sv_2pv_nolen(sv)   SvPV_nolen(sv)
Packit 7d6a7d
Packit 7d6a7d
#ifdef SvPVbyte
Packit 7d6a7d
Packit 7d6a7d
/* Hint: SvPVbyte
Packit 7d6a7d
 * Does not work in perl-5.6.1, ppport.h implements a version
Packit 7d6a7d
 * borrowed from perl-5.7.3.
Packit 7d6a7d
 */
Packit 7d6a7d
Packit 7d6a7d
#if { VERSION < 5.7.0 }
Packit 7d6a7d
Packit 7d6a7d
#if { NEED sv_2pvbyte }
Packit 7d6a7d
Packit 7d6a7d
char *
Packit 7d6a7d
sv_2pvbyte(pTHX_ SV *sv, STRLEN *lp)
Packit 7d6a7d
{
Packit 7d6a7d
  sv_utf8_downgrade(sv,0);
Packit 7d6a7d
  return SvPV(sv,*lp);
Packit 7d6a7d
}
Packit 7d6a7d
Packit 7d6a7d
#endif
Packit 7d6a7d
Packit 7d6a7d
/* Hint: sv_2pvbyte
Packit 7d6a7d
 * Use the SvPVbyte() macro instead of sv_2pvbyte().
Packit 7d6a7d
 */
Packit 7d6a7d
Packit 7d6a7d
#undef SvPVbyte
Packit 7d6a7d
Packit 7d6a7d
#define SvPVbyte(sv, lp)                                                \
Packit 7d6a7d
        ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK)                \
Packit 7d6a7d
         ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp))
Packit 7d6a7d
Packit 7d6a7d
#endif
Packit 7d6a7d
Packit 7d6a7d
#else
Packit 7d6a7d
Packit 7d6a7d
#  define SvPVbyte          SvPV
Packit 7d6a7d
#  define sv_2pvbyte        sv_2pv
Packit 7d6a7d
Packit 7d6a7d
#endif
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  sv_2pvbyte_nolen(sv)  sv_2pv_nolen(sv)
Packit 7d6a7d
Packit 7d6a7d
/* Hint: sv_pvn
Packit 7d6a7d
 * Always use the SvPV() macro instead of sv_pvn().
Packit 7d6a7d
 */
Packit 7d6a7d
Packit 7d6a7d
/* Hint: sv_pvn_force
Packit 7d6a7d
 * Always use the SvPV_force() macro instead of sv_pvn_force().
Packit 7d6a7d
 */
Packit 7d6a7d
Packit 7d6a7d
/* If these are undefined, they're not handled by the core anyway */
Packit 7d6a7d
__UNDEFINED__  SV_IMMEDIATE_UNREF       0
Packit 7d6a7d
__UNDEFINED__  SV_GMAGIC                0
Packit 7d6a7d
__UNDEFINED__  SV_COW_DROP_PV           0
Packit 7d6a7d
__UNDEFINED__  SV_UTF8_NO_ENCODING      0
Packit 7d6a7d
__UNDEFINED__  SV_NOSTEAL               0
Packit 7d6a7d
__UNDEFINED__  SV_CONST_RETURN          0
Packit 7d6a7d
__UNDEFINED__  SV_MUTABLE_RETURN        0
Packit 7d6a7d
__UNDEFINED__  SV_SMAGIC                0
Packit 7d6a7d
__UNDEFINED__  SV_HAS_TRAILING_NUL      0
Packit 7d6a7d
__UNDEFINED__  SV_COW_SHARED_HASH_KEYS  0
Packit 7d6a7d
Packit 7d6a7d
#if { VERSION < 5.7.2 }
Packit 7d6a7d
Packit 7d6a7d
#if { NEED sv_2pv_flags }
Packit 7d6a7d
Packit 7d6a7d
char *
Packit 7d6a7d
sv_2pv_flags(pTHX_ SV *sv, STRLEN *lp, I32 flags)
Packit 7d6a7d
{
Packit 7d6a7d
  STRLEN n_a = (STRLEN) flags;
Packit 7d6a7d
  return sv_2pv(sv, lp ? lp : &n_a);
Packit 7d6a7d
}
Packit 7d6a7d
Packit 7d6a7d
#endif
Packit 7d6a7d
Packit 7d6a7d
#if { NEED sv_pvn_force_flags }
Packit 7d6a7d
Packit 7d6a7d
char *
Packit 7d6a7d
sv_pvn_force_flags(pTHX_ SV *sv, STRLEN *lp, I32 flags)
Packit 7d6a7d
{
Packit 7d6a7d
  STRLEN n_a = (STRLEN) flags;
Packit 7d6a7d
  return sv_pvn_force(sv, lp ? lp : &n_a);
Packit 7d6a7d
}
Packit 7d6a7d
Packit 7d6a7d
#endif
Packit 7d6a7d
Packit 7d6a7d
#endif
Packit 7d6a7d
Packit 7d6a7d
#if { VERSION < 5.8.8 } || ( { VERSION >= 5.9.0 } && { VERSION < 5.9.3 } )
Packit 7d6a7d
# define DPPP_SVPV_NOLEN_LP_ARG &PL_na
Packit 7d6a7d
#else
Packit 7d6a7d
# define DPPP_SVPV_NOLEN_LP_ARG 0
Packit 7d6a7d
#endif
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_const(sv, lp)      SvPV_flags_const(sv, lp, SV_GMAGIC)
Packit 7d6a7d
__UNDEFINED__  SvPV_mutable(sv, lp)    SvPV_flags_mutable(sv, lp, SV_GMAGIC)
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_flags(sv, lp, flags) \
Packit 7d6a7d
                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
Packit 7d6a7d
                  ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags))
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_flags_const(sv, lp, flags) \
Packit 7d6a7d
                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
Packit 7d6a7d
                  ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \
Packit 7d6a7d
                  (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN))
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_flags_const_nolen(sv, flags) \
Packit 7d6a7d
                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
Packit 7d6a7d
                  ? SvPVX_const(sv) : \
Packit 7d6a7d
                  (const char*) sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN))
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_flags_mutable(sv, lp, flags) \
Packit 7d6a7d
                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
Packit 7d6a7d
                  ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \
Packit 7d6a7d
                  sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_force(sv, lp) SvPV_force_flags(sv, lp, SV_GMAGIC)
Packit 7d6a7d
__UNDEFINED__  SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC)
Packit 7d6a7d
__UNDEFINED__  SvPV_force_mutable(sv, lp) SvPV_force_flags_mutable(sv, lp, SV_GMAGIC)
Packit 7d6a7d
__UNDEFINED__  SvPV_force_nomg(sv, lp) SvPV_force_flags(sv, lp, 0)
Packit 7d6a7d
__UNDEFINED__  SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0)
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_force_flags(sv, lp, flags) \
Packit 7d6a7d
                 ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
Packit 7d6a7d
                 ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags))
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_force_flags_nolen(sv, flags) \
Packit 7d6a7d
                 ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
Packit 7d6a7d
                 ? SvPVX(sv) : sv_pvn_force_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags))
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_force_flags_mutable(sv, lp, flags) \
Packit 7d6a7d
                 ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
Packit 7d6a7d
                 ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \
Packit 7d6a7d
                  : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_nolen(sv) \
Packit 7d6a7d
                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
Packit 7d6a7d
                  ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC))
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_nolen_const(sv) \
Packit 7d6a7d
                 ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
Packit 7d6a7d
                  ? SvPVX_const(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN))
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_nomg(sv, lp) SvPV_flags(sv, lp, 0)
Packit 7d6a7d
__UNDEFINED__  SvPV_nomg_const(sv, lp) SvPV_flags_const(sv, lp, 0)
Packit 7d6a7d
__UNDEFINED__  SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0)
Packit 7d6a7d
__UNDEFINED__  SvPV_nomg_nolen(sv) ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
Packit 7d6a7d
                                    ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, 0))
Packit 7d6a7d
Packit 7d6a7d
__UNDEFINED__  SvPV_renew(sv,n) STMT_START { SvLEN_set(sv, n); \
Packit 7d6a7d
                 SvPV_set((sv), (char *) saferealloc(          \
Packit 7d6a7d
                       (Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \
Packit 7d6a7d
               } STMT_END
Packit 7d6a7d
Packit 7d6a7d
=xsinit
Packit 7d6a7d
Packit 7d6a7d
#define NEED_sv_2pv_flags
Packit 7d6a7d
#define NEED_sv_pvn_force_flags
Packit 7d6a7d
#define NEED_sv_2pvbyte
Packit 7d6a7d
Packit 7d6a7d
=xsubs
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPVbyte(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPVbyte(sv, len);
Packit 7d6a7d
                RETVAL = strEQ(str, "mhx") ? (IV) len : (IV) -1;
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_nolen(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_nolen(sv);
Packit 7d6a7d
                RETVAL = strEQ(str, "mhx") ? 42 : 0;
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_const(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                const char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_const(sv, len);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 40 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_mutable(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_mutable(sv, len);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 41 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_flags(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_flags(sv, len, SV_GMAGIC);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 42 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_flags_const(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                const char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_flags_const(sv, len, SV_GMAGIC);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 43 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_flags_const_nolen(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                const char *str;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_flags_const_nolen(sv, SV_GMAGIC);
Packit 7d6a7d
                RETVAL = strEQ(str, "mhx") ? 47 : 0;
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_flags_mutable(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_flags_mutable(sv, len, SV_GMAGIC);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 45 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_force(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_force(sv, len);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 46 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_force_nolen(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_force_nolen(sv);
Packit 7d6a7d
                RETVAL = strEQ(str, "mhx") ? 50 : 0;
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_force_mutable(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_force_mutable(sv, len);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 48 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_force_nomg(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_force_nomg(sv, len);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 49 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_force_nomg_nolen(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_force_nomg_nolen(sv);
Packit 7d6a7d
                RETVAL = strEQ(str, "mhx") ? 53 : 0;
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_force_flags(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_force_flags(sv, len, SV_GMAGIC);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 51 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_force_flags_nolen(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_force_flags_nolen(sv, SV_GMAGIC);
Packit 7d6a7d
                RETVAL = strEQ(str, "mhx") ? 55 : 0;
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_force_flags_mutable(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_force_flags_mutable(sv, len, SV_GMAGIC);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 53 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_nolen_const(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                const char *str;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_nolen_const(sv);
Packit 7d6a7d
                RETVAL = strEQ(str, "mhx") ? 57 : 0;
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_nomg(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_nomg(sv, len);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 55 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_nomg_const(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                const char *str;
Packit 7d6a7d
                STRLEN len;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_nomg_const(sv, len);
Packit 7d6a7d
                RETVAL = len + (strEQ(str, "mhx") ? 56 : 0);
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_nomg_const_nolen(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                const char *str;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_nomg_const_nolen(sv);
Packit 7d6a7d
                RETVAL = strEQ(str, "mhx") ? 60 : 0;
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
IV
Packit 7d6a7d
SvPV_nomg_nolen(sv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                char *str;
Packit 7d6a7d
        CODE:
Packit 7d6a7d
                str = SvPV_nomg_nolen(sv);
Packit 7d6a7d
                RETVAL = strEQ(str, "mhx") ? 61 : 0;
Packit 7d6a7d
        OUTPUT:
Packit 7d6a7d
                RETVAL
Packit 7d6a7d
Packit 7d6a7d
void
Packit 7d6a7d
SvPV_renew(sv, nlen, insv)
Packit 7d6a7d
        SV *sv
Packit 7d6a7d
        STRLEN nlen
Packit 7d6a7d
        SV *insv
Packit 7d6a7d
        PREINIT:
Packit 7d6a7d
                STRLEN slen;
Packit 7d6a7d
                const char *str;
Packit 7d6a7d
        PPCODE:
Packit 7d6a7d
                str = SvPV_const(insv, slen);
Packit 7d6a7d
                XPUSHs(sv);
Packit 7d6a7d
                mXPUSHi(SvLEN(sv));
Packit 7d6a7d
                SvPV_renew(sv, nlen);
Packit 7d6a7d
                Copy(str, SvPVX(sv), slen + 1, char);
Packit 7d6a7d
                SvCUR_set(sv, slen);
Packit 7d6a7d
                mXPUSHi(SvLEN(sv));
Packit 7d6a7d
Packit 7d6a7d
Packit 7d6a7d
=tests plan => 49
Packit 7d6a7d
Packit 7d6a7d
my $mhx = "mhx";
Packit 7d6a7d
Packit 7d6a7d
ok(&Devel::PPPort::SvPVbyte($mhx), 3);
Packit 7d6a7d
Packit 7d6a7d
my $i = 42;
Packit 7d6a7d
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_nolen($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_const($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_mutable($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_flags($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_flags_const($mhx), $i++);
Packit 7d6a7d
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_flags_const_nolen($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_flags_mutable($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_force($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_force_nolen($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_force_mutable($mhx), $i++);
Packit 7d6a7d
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_force_nomg($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_force_nomg_nolen($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_force_flags($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_force_flags_nolen($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_force_flags_mutable($mhx), $i++);
Packit 7d6a7d
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_nolen_const($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_nomg($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_nomg_const($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_nomg_const_nolen($mhx), $i++);
Packit 7d6a7d
ok(&Devel::PPPort::SvPV_nomg_nolen($mhx), $i++);
Packit 7d6a7d
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_nolen($mhx), 0);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_const($mhx), 2);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_mutable($mhx), 2);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_flags($mhx), 2);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_flags_const($mhx), 2);
Packit 7d6a7d
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_flags_const_nolen($mhx), 0);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_flags_mutable($mhx), 2);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_force($mhx), 2);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_force_nolen($mhx), 0);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_force_mutable($mhx), 2);
Packit 7d6a7d
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_force_nomg($mhx), 2);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_force_nomg_nolen($mhx), 0);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_force_flags($mhx), 2);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_force_flags_nolen($mhx), 0);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_force_flags_mutable($mhx), 2);
Packit 7d6a7d
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_nolen_const($mhx), 0);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_nomg($mhx), 2);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_nomg_const($mhx), 2);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_nomg_const_nolen($mhx), 0);
Packit 7d6a7d
$mhx = 42; ok(&Devel::PPPort::SvPV_nomg_nolen($mhx), 0);
Packit 7d6a7d
Packit 7d6a7d
my $str = "";
Packit 7d6a7d
&Devel::PPPort::SvPV_force($str);
Packit 7d6a7d
my($s2, $before, $after) = &Devel::PPPort::SvPV_renew($str, 81, "x"x80);
Packit 7d6a7d
ok($str, "x"x80);
Packit 7d6a7d
ok($s2, "x"x80);
Packit 7d6a7d
ok($before < 81);
Packit 7d6a7d
ok($after, 81);
Packit 7d6a7d
Packit 7d6a7d
$str = "x"x400;
Packit 7d6a7d
&Devel::PPPort::SvPV_force($str);
Packit 7d6a7d
($s2, $before, $after) = &Devel::PPPort::SvPV_renew($str, 41, "x"x40);
Packit 7d6a7d
ok($str, "x"x40);
Packit 7d6a7d
ok($s2, "x"x40);
Packit 7d6a7d
ok($before > 41);
Packit 7d6a7d
ok($after, 41);