… | |
… | |
1298 | |
1298 | |
1299 | static SV * |
1299 | static SV * |
1300 | decode_sv (dec_t *dec) |
1300 | decode_sv (dec_t *dec) |
1301 | { |
1301 | { |
1302 | // the beauty of JSON: you need exactly one character lookahead |
1302 | // the beauty of JSON: you need exactly one character lookahead |
1303 | // to parse anything. |
1303 | // to parse everything. |
1304 | switch (*dec->cur) |
1304 | switch (*dec->cur) |
1305 | { |
1305 | { |
1306 | case '"': ++dec->cur; return decode_str (dec); |
1306 | case '"': ++dec->cur; return decode_str (dec); |
1307 | case '[': ++dec->cur; return decode_av (dec); |
1307 | case '[': ++dec->cur; return decode_av (dec); |
1308 | case '{': ++dec->cur; return decode_hv (dec); |
1308 | case '{': ++dec->cur; return decode_hv (dec); |
1309 | |
1309 | |
1310 | case '-': |
1310 | case '-': |
1311 | case '0': case '1': case '2': case '3': case '4': |
1311 | case '0': case '1': case '2': case '3': case '4': |
1312 | case '5': case '6': case '7': case '8': case '9': |
1312 | case '5': case '6': case '7': case '8': case '9': |
1313 | return decode_num (dec); |
1313 | return decode_num (dec); |