Convert-Scalar

 view release on metacpan or  search on metacpan

Scalar.xs  view on Meta::CPAN


        sv_utf8_upgrade(scalar);
        RETCOPY (scalar);

bool
utf8_downgrade (SV *scalar, bool fail_ok = 0)
	CODE:
        if (SvREADONLY (scalar))
          croak ("Convert::Scalar::utf8_downgrade called on read only scalar");

        RETVAL = !!sv_utf8_downgrade (scalar, fail_ok);
	OUTPUT:
	RETVAL

void
utf8_encode (SV *scalar)
	PPCODE:
        if (SvREADONLY (scalar))
          croak ("Convert::Scalar::utf8_encode called on read only scalar");

        sv_utf8_encode (scalar);
        RETCOPY (scalar);

UV
utf8_length (SV *scalar)
	CODE:
        RETVAL = (UV) utf8_length (SvPV_nolen (scalar), SvEND (scalar));
	OUTPUT:
	RETVAL

bool
readonly (SV *scalar, SV *on = NO_INIT)
        CODE:
        RETVAL = SvREADONLY (scalar);
        if (items > 1)
          {
            if (SvTRUE (on))
              SvREADONLY_on (scalar);
            else
              SvREADONLY_off (scalar);
          }
	OUTPUT:
        RETVAL

void
readonly_on (SV *scalar)
        CODE:
        SvREADONLY_on (scalar);

void
readonly_off (SV *scalar)
        CODE:
        SvREADONLY_off (scalar);

void
unmagic (SV *scalar, char type)
	CODE:
        sv_unmagic (scalar, type);

void
weaken (SV *scalar)
	CODE:
        sv_rvweaken (scalar);

void
taint (SV *scalar)
	CODE:
        SvTAINTED_on (scalar);

bool
tainted (SV *scalar)
        CODE:
        RETVAL = !!SvTAINTED (scalar);
	OUTPUT:
        RETVAL

void
untaint (SV *scalar)
	CODE:
        SvTAINTED_off (scalar);

STRLEN
len (SV *scalar)
	CODE:
        if (SvTYPE (scalar) < SVt_PV)
          XSRETURN_UNDEF;
        RETVAL = SvLEN (scalar);
	OUTPUT:
        RETVAL

void
grow (SV *scalar, STRLEN newlen)
        PPCODE:
        sv_grow (scalar, newlen);
        if (GIMME_V != G_VOID)
          XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));

void
extend (SV *scalar, STRLEN addlen = 64)
        PPCODE:
{
	extend (scalar, addlen);

        if (GIMME_V != G_VOID)
          XPUSHs (sv_2mortal (SvREFCNT_inc (scalar)));
}

SSize_t
extend_read (PerlIO *fh, SV *scalar, STRLEN addlen = 64)
        CODE:
{
	if (SvUTF8 (scalar))
          sv_utf8_downgrade (scalar, 0);

	extend (scalar, addlen);

        RETVAL = PerlLIO_read (PerlIO_fileno (fh), SvEND (scalar), SvLEN (scalar) - SvCUR (scalar));

        if (RETVAL < 0)
          XSRETURN_UNDEF;

        SvPOK_only (scalar);
        SvCUR_set (scalar, SvCUR (scalar) + RETVAL);



( run in 1.417 second using v1.01-cache-2.11-cpan-5735350b133 )