Skip to content

Commit 9863f62

Browse files
committed
ext/json: Refactor parser methods
Remove unused parser functions Voidify functions that always return SUCCESS Use zend_return type as return type for php_json_parser_func_object_update_t instead of int
1 parent c275f91 commit 9863f62

File tree

2 files changed

+14
-52
lines changed

2 files changed

+14
-52
lines changed

ext/json/json_parser.y

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ int json_yydebug = 1;
6868
%code {
6969
static int php_json_yylex(union YYSTYPE *value, php_json_parser *parser);
7070
static void php_json_yyerror(php_json_parser *parser, char const *msg);
71-
static int php_json_parser_array_create(php_json_parser *parser, zval *array);
72-
static int php_json_parser_object_create(php_json_parser *parser, zval *array);
71+
static void php_json_parser_array_create(php_json_parser *parser, zval *array);
72+
static void php_json_parser_object_create(php_json_parser *parser, zval *array);
7373

7474
}
7575

@@ -89,17 +89,11 @@ object:
8989
'{'
9090
{
9191
PHP_JSON_DEPTH_INC;
92-
if (parser->methods.object_start && FAILURE == parser->methods.object_start(parser)) {
93-
YYERROR;
94-
}
9592
}
9693
members object_end
9794
{
9895
ZVAL_COPY_VALUE(&$$, &$3);
9996
PHP_JSON_DEPTH_DEC;
100-
if (parser->methods.object_end && FAILURE == parser->methods.object_end(parser, &$$)) {
101-
YYERROR;
102-
}
10397
}
10498
;
10599

@@ -145,17 +139,11 @@ array:
145139
'['
146140
{
147141
PHP_JSON_DEPTH_INC;
148-
if (parser->methods.array_start && FAILURE == parser->methods.array_start(parser)) {
149-
YYERROR;
150-
}
151142
}
152143
elements array_end
153144
{
154145
ZVAL_COPY_VALUE(&$$, &$3);
155146
PHP_JSON_DEPTH_DEC;
156-
if (parser->methods.array_end && FAILURE == parser->methods.array_end(parser, &$$)) {
157-
YYERROR;
158-
}
159147
}
160148
;
161149

@@ -212,29 +200,26 @@ value:
212200

213201
%% /* Functions */
214202

215-
static int php_json_parser_array_create(php_json_parser *parser, zval *array)
203+
static void php_json_parser_array_create(php_json_parser *parser, zval *array)
216204
{
217205
array_init(array);
218-
return SUCCESS;
219206
}
220207

221-
static int php_json_parser_array_append(php_json_parser *parser, zval *array, zval *zvalue)
208+
static void php_json_parser_array_append(php_json_parser *parser, zval *array, zval *zvalue)
222209
{
223210
zend_hash_next_index_insert(Z_ARRVAL_P(array), zvalue);
224-
return SUCCESS;
225211
}
226212

227-
static int php_json_parser_object_create(php_json_parser *parser, zval *object)
213+
static void php_json_parser_object_create(php_json_parser *parser, zval *object)
228214
{
229215
if (parser->scanner.options & PHP_JSON_OBJECT_AS_ARRAY) {
230216
array_init(object);
231217
} else {
232218
object_init(object);
233219
}
234-
return SUCCESS;
235220
}
236221

237-
static int php_json_parser_object_update(php_json_parser *parser, zval *object, zend_string *key, zval *zvalue)
222+
static zend_result php_json_parser_object_update(php_json_parser *parser, zval *object, zend_string *key, zval *zvalue)
238223
{
239224
/* if JSON_OBJECT_AS_ARRAY is set */
240225
if (Z_TYPE_P(object) == IS_ARRAY) {
@@ -255,24 +240,21 @@ static int php_json_parser_object_update(php_json_parser *parser, zval *object,
255240
return SUCCESS;
256241
}
257242

258-
static int php_json_parser_array_create_validate(php_json_parser *parser, zval *array)
243+
static void php_json_parser_array_create_validate(php_json_parser *parser, zval *array)
259244
{
260245
ZVAL_NULL(array);
261-
return SUCCESS;
262246
}
263247

264-
static int php_json_parser_array_append_validate(php_json_parser *parser, zval *array, zval *zvalue)
248+
static void php_json_parser_array_append_validate(php_json_parser *parser, zval *array, zval *zvalue)
265249
{
266-
return SUCCESS;
267250
}
268251

269-
static int php_json_parser_object_create_validate(php_json_parser *parser, zval *object)
252+
static void php_json_parser_object_create_validate(php_json_parser *parser, zval *object)
270253
{
271254
ZVAL_NULL(object);
272-
return SUCCESS;
273255
}
274256

275-
static int php_json_parser_object_update_validate(php_json_parser *parser, zval *object, zend_string *key, zval *zvalue)
257+
static zend_result php_json_parser_object_update_validate(php_json_parser *parser, zval *object, zend_string *key, zval *zvalue)
276258
{
277259
return SUCCESS;
278260
}
@@ -312,24 +294,16 @@ static const php_json_parser_methods default_parser_methods =
312294
{
313295
php_json_parser_array_create,
314296
php_json_parser_array_append,
315-
NULL,
316-
NULL,
317297
php_json_parser_object_create,
318298
php_json_parser_object_update,
319-
NULL,
320-
NULL,
321299
};
322300

323301
static const php_json_parser_methods validate_parser_methods =
324302
{
325303
php_json_parser_array_create_validate,
326304
php_json_parser_array_append_validate,
327-
NULL,
328-
NULL,
329305
php_json_parser_object_create_validate,
330306
php_json_parser_object_update_validate,
331-
NULL,
332-
NULL,
333307
};
334308

335309
PHP_JSON_API void php_json_parser_init_ex(php_json_parser *parser,

ext/json/php_json_parser.h

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,32 +22,20 @@
2222

2323
typedef struct _php_json_parser php_json_parser;
2424

25-
typedef int (*php_json_parser_func_array_create_t)(
25+
typedef void (*php_json_parser_func_array_create_t)(
2626
php_json_parser *parser, zval *array);
27-
typedef int (*php_json_parser_func_array_append_t)(
27+
typedef void (*php_json_parser_func_array_append_t)(
2828
php_json_parser *parser, zval *array, zval *zvalue);
29-
typedef int (*php_json_parser_func_array_start_t)(
30-
php_json_parser *parser);
31-
typedef int (*php_json_parser_func_array_end_t)(
29+
typedef void (*php_json_parser_func_object_create_t)(
3230
php_json_parser *parser, zval *object);
33-
typedef int (*php_json_parser_func_object_create_t)(
34-
php_json_parser *parser, zval *object);
35-
typedef int (*php_json_parser_func_object_update_t)(
31+
typedef zend_result (*php_json_parser_func_object_update_t)(
3632
php_json_parser *parser, zval *object, zend_string *key, zval *zvalue);
37-
typedef int (*php_json_parser_func_object_start_t)(
38-
php_json_parser *parser);
39-
typedef int (*php_json_parser_func_object_end_t)(
40-
php_json_parser *parser, zval *object);
4133

4234
typedef struct _php_json_parser_methods {
4335
php_json_parser_func_array_create_t array_create;
4436
php_json_parser_func_array_append_t array_append;
45-
php_json_parser_func_array_start_t array_start;
46-
php_json_parser_func_array_end_t array_end;
4737
php_json_parser_func_object_create_t object_create;
4838
php_json_parser_func_object_update_t object_update;
49-
php_json_parser_func_object_start_t object_start;
50-
php_json_parser_func_object_end_t object_end;
5139
} php_json_parser_methods;
5240

5341
struct _php_json_parser {

0 commit comments

Comments
 (0)