jp 202 ext/json/JSON_parser.c push(JSON_parser jp, int mode) jp 204 ext/json/JSON_parser.c jp->top += 1; jp 205 ext/json/JSON_parser.c if (jp->top >= jp->depth) { jp 206 ext/json/JSON_parser.c jp->error_code = PHP_JSON_ERROR_DEPTH; jp 209 ext/json/JSON_parser.c jp->stack[jp->top] = mode; jp 219 ext/json/JSON_parser.c pop(JSON_parser jp, int mode) jp 221 ext/json/JSON_parser.c if (jp->top < 0 || jp->stack[jp->top] != mode) { jp 222 ext/json/JSON_parser.c jp->error_code = PHP_JSON_ERROR_STATE_MISMATCH; jp 225 ext/json/JSON_parser.c jp->top -= 1; jp 244 ext/json/JSON_parser.c JSON_parser jp = (JSON_parser)emalloc(sizeof(struct JSON_parser_struct)); jp 245 ext/json/JSON_parser.c jp->state = GO; jp 246 ext/json/JSON_parser.c jp->depth = depth; jp 247 ext/json/JSON_parser.c jp->top = -1; jp 248 ext/json/JSON_parser.c jp->error_code = PHP_JSON_ERROR_NONE; jp 249 ext/json/JSON_parser.c jp->stack = (int*)ecalloc(depth, sizeof(int)); jp 251 ext/json/JSON_parser.c jp->the_zstack = (zval **)safe_emalloc(depth, sizeof(zval), 0); jp 253 ext/json/JSON_parser.c jp->the_zstack = &jp->the_static_zstack[0]; jp 255 ext/json/JSON_parser.c push(jp, MODE_DONE); jp 256 ext/json/JSON_parser.c return jp; jp 263 ext/json/JSON_parser.c free_JSON_parser(JSON_parser jp) jp 265 ext/json/JSON_parser.c efree((void*)jp->stack); jp 266 ext/json/JSON_parser.c if (jp->the_zstack != &jp->the_static_zstack[0]) { jp 267 ext/json/JSON_parser.c efree(jp->the_zstack); jp 269 ext/json/JSON_parser.c efree((void*)jp); jp 392 ext/json/JSON_parser.c static void attach_zval(JSON_parser jp, int up, int cur, smart_str *key, int assoc TSRMLS_DC) jp 394 ext/json/JSON_parser.c zval *root = jp->the_zstack[up]; jp 395 ext/json/JSON_parser.c zval *child = jp->the_zstack[cur]; jp 396 ext/json/JSON_parser.c int up_mode = jp->stack[up]; jp 439 ext/json/JSON_parser.c parse_JSON_ex(JSON_parser jp, zval *z, unsigned short utf16_json[], int length, int options TSRMLS_DC) jp 462 ext/json/JSON_parser.c jp->error_code = PHP_JSON_ERROR_CTRL_CHAR; jp 470 ext/json/JSON_parser.c next_state = state_transition_table[jp->state][next_class]; jp 476 ext/json/JSON_parser.c if (next_state == ST && jp->state != U4) { jp 477 ext/json/JSON_parser.c if (jp->state != ES) { jp 507 ext/json/JSON_parser.c } else if (next_state == ST && jp->state == U4) { jp 522 ext/json/JSON_parser.c } else if (type < IS_BOOL && ((jp->state == T3 && next_state == OK) || (jp->state == F4 && next_state == OK))) { jp 524 ext/json/JSON_parser.c } else if (type < IS_NULL && jp->state == N3 && next_state == OK) { jp 529 ext/json/JSON_parser.c jp->state = next_state; jp 537 ext/json/JSON_parser.c if (!pop(jp, MODE_KEY)) { jp 541 ext/json/JSON_parser.c jp->state = OK; jp 545 ext/json/JSON_parser.c if (type != -1 && jp->stack[jp->top] == MODE_OBJECT) jp 553 ext/json/JSON_parser.c add_property_zval_ex(jp->the_zstack[jp->top], (key.len ? key.c : "_empty_"), (key.len ? (key.len + 1) : sizeof("_empty_")), mval TSRMLS_CC); jp 556 ext/json/JSON_parser.c add_assoc_zval_ex(jp->the_zstack[jp->top], (key.len ? key.c : ""), (key.len ? (key.len + 1) : sizeof("")), mval); jp 564 ext/json/JSON_parser.c if (!pop(jp, MODE_OBJECT)) { jp 568 ext/json/JSON_parser.c jp->state = OK; jp 573 ext/json/JSON_parser.c if (type != -1 && jp->stack[jp->top] == MODE_ARRAY) jp 579 ext/json/JSON_parser.c add_next_index_zval(jp->the_zstack[jp->top], mval); jp 584 ext/json/JSON_parser.c if (!pop(jp, MODE_ARRAY)) { jp 588 ext/json/JSON_parser.c jp->state = OK; jp 593 ext/json/JSON_parser.c if (!push(jp, MODE_KEY)) { jp 598 ext/json/JSON_parser.c jp->state = OB; jp 599 ext/json/JSON_parser.c if (jp->top > 0) { jp 602 ext/json/JSON_parser.c if (jp->top == 1) { jp 614 ext/json/JSON_parser.c jp->the_zstack[jp->top] = obj; jp 616 ext/json/JSON_parser.c if (jp->top > 1) { jp 617 ext/json/JSON_parser.c attach_zval(jp, jp->top - 1, jp->top, &key, assoc TSRMLS_CC); jp 626 ext/json/JSON_parser.c if (!push(jp, MODE_ARRAY)) { jp 630 ext/json/JSON_parser.c jp->state = AR; jp 632 ext/json/JSON_parser.c if (jp->top > 0) { jp 635 ext/json/JSON_parser.c if (jp->top == 1) { jp 642 ext/json/JSON_parser.c jp->the_zstack[jp->top] = arr; jp 644 ext/json/JSON_parser.c if (jp->top > 1) { jp 645 ext/json/JSON_parser.c attach_zval(jp, jp->top - 1, jp->top, &key, assoc TSRMLS_CC); jp 655 ext/json/JSON_parser.c switch (jp->stack[jp->top]) { jp 657 ext/json/JSON_parser.c jp->state = CO; jp 664 ext/json/JSON_parser.c jp->state = OK; jp 670 ext/json/JSON_parser.c jp->state = OK; jp 676 ext/json/JSON_parser.c jp->error_code = PHP_JSON_ERROR_SYNTAX; jp 686 ext/json/JSON_parser.c (jp->stack[jp->top] == MODE_OBJECT || jp 687 ext/json/JSON_parser.c jp->stack[jp->top] == MODE_ARRAY)) jp 693 ext/json/JSON_parser.c switch (jp->stack[jp->top]) { jp 695 ext/json/JSON_parser.c if (pop(jp, MODE_OBJECT) && push(jp, MODE_KEY)) { jp 698 ext/json/JSON_parser.c add_property_zval_ex(jp->the_zstack[jp->top], (key.len ? key.c : "_empty_"), (key.len ? (key.len + 1) : sizeof("_empty_")), mval TSRMLS_CC); jp 701 ext/json/JSON_parser.c add_assoc_zval_ex(jp->the_zstack[jp->top], (key.len ? key.c : ""), (key.len ? (key.len + 1) : sizeof("")), mval); jp 705 ext/json/JSON_parser.c jp->state = KE; jp 710 ext/json/JSON_parser.c add_next_index_zval(jp->the_zstack[jp->top], mval); jp 712 ext/json/JSON_parser.c jp->state = VA; jp 716 ext/json/JSON_parser.c jp->error_code = PHP_JSON_ERROR_SYNTAX; jp 725 ext/json/JSON_parser.c if (pop(jp, MODE_KEY) && push(jp, MODE_OBJECT)) { jp 726 ext/json/JSON_parser.c jp->state = VA; jp 734 ext/json/JSON_parser.c jp->error_code = PHP_JSON_ERROR_SYNTAX; jp 743 ext/json/JSON_parser.c if (jp->state == OK && pop(jp, MODE_DONE)) { jp 747 ext/json/JSON_parser.c jp->error_code = PHP_JSON_ERROR_SYNTAX; jp 35 ext/json/JSON_parser.h extern int parse_JSON_ex(JSON_parser jp, zval *z, unsigned short utf16_json[], int length, int options TSRMLS_DC); jp 36 ext/json/JSON_parser.h extern int free_JSON_parser(JSON_parser jp); jp 38 ext/json/JSON_parser.h static inline int parse_JSON(JSON_parser jp, zval *z, unsigned short utf16_json[], int length, int assoc TSRMLS_DC) jp 40 ext/json/JSON_parser.h return parse_JSON_ex(jp, z, utf16_json, length, assoc ? PHP_JSON_OBJECT_AS_ARRAY : 0 TSRMLS_CC); jp 688 ext/json/json.c JSON_parser jp; jp 708 ext/json/json.c jp = new_JSON_parser(depth); jp 709 ext/json/json.c if (parse_JSON_ex(jp, z, utf16, utf16_len, options TSRMLS_CC)) { jp 736 ext/json/json.c jp->error_code = PHP_JSON_ERROR_NONE; jp 779 ext/json/json.c jp->error_code = PHP_JSON_ERROR_NONE; jp 786 ext/json/json.c JSON_G(error_code) = jp->error_code; jp 787 ext/json/json.c free_JSON_parser(jp);