diff options
author | Scott MacVicar <scottmac@php.net> | 2008-12-17 14:40:06 +0000 |
---|---|---|
committer | Scott MacVicar <scottmac@php.net> | 2008-12-17 14:40:06 +0000 |
commit | 8ef7fe1d996c702d37d21cbea0e2a28b1013ed4a (patch) | |
tree | 477a5a1126a1ebf08b25cdd11890f8cdec3700f1 /ext/json/JSON_parser.h | |
parent | 77a63540a5f7f54b1741152f316fd59caa4d4989 (diff) | |
download | php-git-8ef7fe1d996c702d37d21cbea0e2a28b1013ed4a.tar.gz |
Update the JSON parser with that on json.org, biggest change here is code readability. Less magic numbers in the state table.
Add missing reflection information to json_encode()
Fixes bug #45791 with 0e0 not being supported as a value
Error values are stored when encountered during parsing
Diffstat (limited to 'ext/json/JSON_parser.h')
-rw-r--r-- | ext/json/JSON_parser.h | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/ext/json/JSON_parser.h b/ext/json/JSON_parser.h index 4790f728e3..9aab62a912 100644 --- a/ext/json/JSON_parser.h +++ b/ext/json/JSON_parser.h @@ -1,6 +1,24 @@ -/* JSON_checker.h */ +/* JSON_parser.h */ + +#ifndef JSON_PARSER_H +#define JSON_PARSER_H #include "php.h" #include "ext/standard/php_smart_str.h" -extern int JSON_parser(zval *z, unsigned short p[], int length, int assoc TSRMLS_DC); +#define JSON_PARSER_MAX_DEPTH 512 + +typedef struct JSON_parser_struct { + int state; + int depth; + int top; + int error; + int* stack; + zval *the_zstack[JSON_PARSER_MAX_DEPTH]; + +} * JSON_parser; + +extern JSON_parser new_JSON_parser(int depth); +extern int parse_JSON(JSON_parser jp, zval *z, unsigned short utf16_json[], int length, int assoc TSRMLS_DC); +extern int free_JSON_parser(JSON_parser jp); +#endif |