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 )