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

Lines Matching refs:dec

796 decode_comment (dec_t *dec)
800 while (*dec->cur && *dec->cur != 0x0a && *dec->cur != 0x0d)
801 ++dec->cur;
805 decode_ws (dec_t *dec)
809 char ch = *dec->cur;
815 if (dec->json.flags & F_RELAXED)
816 decode_comment (dec);
826 ++dec->cur;
830 #define ERR(reason) SB dec->err = reason; goto fail; SE
833 if (*dec->cur != ch) \
835 ++dec->cur; \
838 #define DEC_INC_DEPTH if (++dec->depth > dec->json.max_depth) ERR (ERR_NESTING_EXCEEDED)
839 #define DEC_DEC_DEPTH --dec->depth
841 static SV *decode_sv (dec_t *dec);
846 decode_4hex (dec_t *dec)
849 unsigned char *cur = (unsigned char *)dec->cur;
856 dec->cur += 4;
868 decode_str (dec_t *dec)
872 char *dec_cur = dec->cur;
907 dec->cur = dec_cur;
908 hi = decode_4hex (dec);
909 dec_cur = dec->cur;
922 dec->cur = dec_cur;
923 lo = decode_4hex (dec);
924 dec_cur = dec->cur;
960 decode_utf8 (dec_cur, dec->end - dec_cur, &clen);
1014 dec->cur = dec_cur;
1018 dec->cur = dec_cur;
1023 decode_num (dec_t *dec)
1026 char *start = dec->cur;
1029 if (*dec->cur == '-')
1030 ++dec->cur;
1032 if (*dec->cur == '0')
1034 ++dec->cur;
1035 if (*dec->cur >= '0' && *dec->cur <= '9')
1038 else if (*dec->cur < '0' || *dec->cur > '9')
1043 ++dec->cur;
1045 while (*dec->cur >= '0' && *dec->cur <= '9');
1048 if (*dec->cur == '.')
1050 ++dec->cur;
1052 if (*dec->cur < '0' || *dec->cur > '9')
1057 ++dec->cur;
1059 while (*dec->cur >= '0' && *dec->cur <= '9');
1065 if (*dec->cur == 'e' || *dec->cur == 'E')
1067 ++dec->cur;
1069 if (*dec->cur == '-' || *dec->cur == '+')
1070 ++dec->cur;
1072 if (*dec->cur < '0' || *dec->cur > '9')
1077 ++dec->cur;
1079 while (*dec->cur >= '0' && *dec->cur <= '9');
1086 int len = dec->cur - start;
1133 return newSVpvn (start, dec->cur - start);
1144 decode_av (dec_t *dec)
1149 decode_ws (dec);
1151 if (*dec->cur == ']')
1152 ++dec->cur;
1158 value = decode_sv (dec);
1164 decode_ws (dec);
1166 if (*dec->cur == ']')
1168 ++dec->cur;
1172 if (*dec->cur != ',')
1175 ++dec->cur;
1177 decode_ws (dec);
1179 if (*dec->cur == ']' && dec->json.flags & F_RELAXED)
1181 ++dec->cur;
1196 decode_hv (dec_t *dec)
1202 decode_ws (dec);
1204 if (*dec->cur == '}')
1205 ++dec->cur;
1218 char *p = dec->cur;
1227 SV *key = decode_str (dec);
1231 decode_ws (dec); EXPECT_CH (':');
1233 decode_ws (dec);
1234 value = decode_sv (dec);
1249 char *key = dec->cur;
1251 dec->cur = p + 1;
1253 decode_ws (dec); EXPECT_CH (':');
1255 decode_ws (dec);
1256 value = decode_sv (dec);
1269 decode_ws (dec);
1271 if (*dec->cur == '}')
1273 ++dec->cur;
1277 if (*dec->cur != ',')
1280 ++dec->cur;
1282 decode_ws (dec);
1284 if (*dec->cur == '}' && dec->json.flags & F_RELAXED)
1286 ++dec->cur;
1295 if (dec->json.flags & F_HOOK)
1297 if (dec->json.cb_sk_object && HvKEYS (hv) == 1)
1307 cb = hv_fetch_ent (dec->json.cb_sk_object, hv_iterkeysv (he), 0, 0);
1330 if (dec->json.cb_object)
1338 PUTBACK; count = call_sv (dec->json.cb_object, G_ARRAY); SPAGAIN;
1361 decode_sv (dec_t *dec)
1365 switch (*dec->cur)
1367 case '"': ++dec->cur; return decode_str (dec);
1368 case '[': ++dec->cur; return decode_av (dec);
1369 case '{': ++dec->cur; return decode_hv (dec);
1374 return decode_num (dec);
1377 if (dec->end - dec->cur >= 4 && !memcmp (dec->cur, "true", 4))
1379 dec->cur += 4;
1391 if (dec->end - dec->cur >= 5 && !memcmp (dec->cur, "false", 5))
1393 dec->cur += 5;
1405 if (dec->end - dec->cur >= 4 && !memcmp (dec->cur, "null", 4))
1407 dec->cur += 4;
1427 dec_t dec;
1468 dec.json = *json;
1469 dec.cur = SvPVX (string);
1470 dec.end = SvEND (string);
1471 dec.err = 0;
1472 dec.depth = 0;
1474 if (dec.json.cb_object || dec.json.cb_sk_object)
1475 dec.json.flags |= F_HOOK;
1477 *dec.end = 0; // this should basically be a nop, too, but make sure it's there
1479 decode_ws (&dec);
1480 sv = decode_sv (&dec);
1483 *offset_return = dec.cur;
1488 decode_ws (&dec);
1490 if (*dec.cur)
1492 dec.err = "garbage after JSON object";
1508 pv_uni_display (uni, dec.cur, dec.end - dec.cur, 20, UNI_DISPLAY_QQ);
1512 dec.err,
1513 ptr_to_index (string, dec.cur),
1514 dec.cur != dec.end ? SvPV_nolen (uni) : "(end of string)");
1519 if (!(dec.json.flags & F_ALLOW_NONREF) && !SvROK (sv))