• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/CPANInternal-140/JSON-XS-2.33/

Lines Matching refs:dec

893 decode_comment (dec_t *dec)
897 while (*dec->cur && *dec->cur != 0x0a && *dec->cur != 0x0d)
898 ++dec->cur;
902 decode_ws (dec_t *dec)
906 char ch = *dec->cur;
912 if (dec->json.flags & F_RELAXED)
913 decode_comment (dec);
923 ++dec->cur;
927 #define ERR(reason) SB dec->err = reason; goto fail; SE
930 if (*dec->cur != ch) \
932 ++dec->cur; \
935 #define DEC_INC_DEPTH if (++dec->depth > dec->json.max_depth) ERR (ERR_NESTING_EXCEEDED)
936 #define DEC_DEC_DEPTH --dec->depth
938 static SV *decode_sv (dec_t *dec);
943 decode_4hex (dec_t *dec)
946 unsigned char *cur = (unsigned char *)dec->cur;
953 dec->cur += 4;
965 decode_str (dec_t *dec)
969 char *dec_cur = dec->cur;
1004 dec->cur = dec_cur;
1005 hi = decode_4hex (dec);
1006 dec_cur = dec->cur;
1019 dec->cur = dec_cur;
1020 lo = decode_4hex (dec);
1021 dec_cur = dec->cur;
1057 decode_utf8 (dec_cur, dec->end - dec_cur, &clen);
1111 dec->cur = dec_cur;
1115 dec->cur = dec_cur;
1120 decode_num (dec_t *dec)
1123 char *start = dec->cur;
1126 if (*dec->cur == '-')
1127 ++dec->cur;
1129 if (*dec->cur == '0')
1131 ++dec->cur;
1132 if (*dec->cur >= '0' && *dec->cur <= '9')
1135 else if (*dec->cur < '0' || *dec->cur > '9')
1140 ++dec->cur;
1142 while (*dec->cur >= '0' && *dec->cur <= '9');
1145 if (*dec->cur == '.')
1147 ++dec->cur;
1149 if (*dec->cur < '0' || *dec->cur > '9')
1154 ++dec->cur;
1156 while (*dec->cur >= '0' && *dec->cur <= '9');
1162 if (*dec->cur == 'e' || *dec->cur == 'E')
1164 ++dec->cur;
1166 if (*dec->cur == '-' || *dec->cur == '+')
1167 ++dec->cur;
1169 if (*dec->cur < '0' || *dec->cur > '9')
1174 ++dec->cur;
1176 while (*dec->cur >= '0' && *dec->cur <= '9');
1183 int len = dec->cur - start;
1226 return newSVpvn (start, dec->cur - start);
1237 decode_av (dec_t *dec)
1242 decode_ws (dec);
1244 if (*dec->cur == ']')
1245 ++dec->cur;
1251 value = decode_sv (dec);
1257 decode_ws (dec);
1259 if (*dec->cur == ']')
1261 ++dec->cur;
1265 if (*dec->cur != ',')
1268 ++dec->cur;
1270 decode_ws (dec);
1272 if (*dec->cur == ']' && dec->json.flags & F_RELAXED)
1274 ++dec->cur;
1289 decode_hv (dec_t *dec)
1295 decode_ws (dec);
1297 if (*dec->cur == '}')
1298 ++dec->cur;
1311 char *p = dec->cur;
1320 SV *key = decode_str (dec);
1324 decode_ws (dec); EXPECT_CH (':');
1326 decode_ws (dec);
1327 value = decode_sv (dec);
1342 char *key = dec->cur;
1344 dec->cur = p + 1;
1346 decode_ws (dec); EXPECT_CH (':');
1348 decode_ws (dec);
1349 value = decode_sv (dec);
1362 decode_ws (dec);
1364 if (*dec->cur == '}')
1366 ++dec->cur;
1370 if (*dec->cur != ',')
1373 ++dec->cur;
1375 decode_ws (dec);
1377 if (*dec->cur == '}' && dec->json.flags & F_RELAXED)
1379 ++dec->cur;
1388 if (dec->json.flags & F_HOOK)
1390 if (dec->json.cb_sk_object && HvKEYS (hv) == 1)
1400 cb = hv_fetch_ent (dec->json.cb_sk_object, hv_iterkeysv (he), 0, 0);
1425 if (dec->json.cb_object)
1433 PUTBACK; count = call_sv (dec->json.cb_object, G_ARRAY); SPAGAIN;
1456 decode_sv (dec_t *dec)
1460 switch (*dec->cur)
1462 case '"': ++dec->cur; return decode_str (dec);
1463 case '[': ++dec->cur; return decode_av (dec);
1464 case '{': ++dec->cur; return decode_hv (dec);
1469 return decode_num (dec);
1472 if (dec->end - dec->cur >= 4 && !memcmp (dec->cur, "true", 4))
1474 dec->cur += 4;
1486 if (dec->end - dec->cur >= 5 && !memcmp (dec->cur, "false", 5))
1488 dec->cur += 5;
1500 if (dec->end - dec->cur >= 4 && !memcmp (dec->cur, "null", 4))
1502 dec->cur += 4;
1522 dec_t dec;
1565 dec.json = *json;
1566 dec.cur = SvPVX (string);
1567 dec.end = SvEND (string);
1568 dec.err = 0;
1569 dec.depth = 0;
1571 if (dec.json.cb_object || dec.json.cb_sk_object)
1572 dec.json.flags |= F_HOOK;
1574 *dec.end = 0; // this should basically be a nop, too, but make sure it's there
1576 decode_ws (&dec);
1577 sv = decode_sv (&dec);
1580 *offset_return = dec.cur;
1585 decode_ws (&dec);
1587 if (*dec.cur)
1589 dec.err = "garbage after JSON object";
1605 pv_uni_display (uni, dec.cur, dec.end - dec.cur, 20, UNI_DISPLAY_QQ);
1609 dec.err,
1610 (int)ptr_to_index (string, dec.cur),
1611 dec.cur != dec.end ? SvPV_nolen (uni) : "(end of string)");
1616 if (!(dec.json.flags & F_ALLOW_NONREF) && !SvROK (sv))