JSON-XS-ByteString

 view release on metacpan or  search on metacpan

ByteString.xs  view on Meta::CPAN

    SvREFCNT_dec_NN(*out);
GIVEUP:
    *out = NULL;
    return str;
}

MODULE = JSON::XS::ByteString		PACKAGE = JSON::XS::ByteString		

void
encode_json(SV * data)
    PPCODE:
        visited_p = 0;
        STRLEN need_size = estimate_normal(data);
        SV * out_sv = sv_2mortal(newSV(need_size));
        SvPOK_only(out_sv);
        visited_p = 0;
        char * cur = (char*)encode_normal((unsigned char*)SvPVX(out_sv), data);
        SvCUR_set(out_sv, cur - SvPVX(out_sv));
        *SvEND(out_sv) = 0;
        PUSHs(out_sv);

void
encode_json_unblessed(SV * data)
    PPCODE:
        visited_p = 0;
        STRLEN need_size = estimate_unblessed(data);
        SV * out_sv = sv_2mortal(newSV(need_size));
        SvPOK_only(out_sv);
        visited_p = 0;
        char * cur = (char*)encode_unblessed((unsigned char*)SvPVX(out_sv), data);
        SvCUR_set(out_sv, cur - SvPVX(out_sv));
        *SvEND(out_sv) = 0;
        PUSHs(out_sv);

void
decode_json(SV * json)
    PPCODE:
        unsigned char *str, *str_end, *str_adv;
        STRLEN len;
        SV * out = NULL;
        str = (unsigned char*) SvPV(json, len);
        str_end = str + len;
        str_adv = skip_space(decode(skip_bom(str, str_end), str_end, &out), str_end);
        if( str_end != str_adv ){
            warn("decode_json: Unconsumed characters from offset %d", (int)(str_adv-str));
            SvREFCNT_dec(out);
            PUSHs(&PL_sv_undef);
        }
        else if( out==NULL )
            PUSHs(&PL_sv_undef);
        else
            PUSHs(sv_2mortal(out));

void
decode_json_safe(SV * json)
    PPCODE:
        unsigned char *str, *str_end, *str_adv;
        STRLEN len;
        SV * out = NULL;
        str = (unsigned char*) SvPV(json, len);
        str_end = str + len;
        str_adv = skip_space(decode(skip_bom(str, str_end), str_end, &out), str_end);
        if( str_end != str_adv ){
            SvREFCNT_dec(out);
            PUSHs(&PL_sv_undef);
        }



( run in 0.378 second using v1.01-cache-2.11-cpan-5511b514fd6 )