summaryrefslogtreecommitdiff
path: root/ext/json/JSON_parser.h
diff options
context:
space:
mode:
authorScott MacVicar <scottmac@php.net>2008-12-17 14:40:06 +0000
committerScott MacVicar <scottmac@php.net>2008-12-17 14:40:06 +0000
commit8ef7fe1d996c702d37d21cbea0e2a28b1013ed4a (patch)
tree477a5a1126a1ebf08b25cdd11890f8cdec3700f1 /ext/json/JSON_parser.h
parent77a63540a5f7f54b1741152f316fd59caa4d4989 (diff)
downloadphp-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.h22
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