Use embedded json parser method structure

This commit is contained in:
Jakub Zelenka 2016-05-02 13:02:40 +01:00
parent 93b67dd511
commit 37048c0f6c
3 changed files with 27 additions and 27 deletions

View file

@ -1464,7 +1464,7 @@ yyreduce:
{ {
PHP_JSON_DEPTH_INC; PHP_JSON_DEPTH_INC;
if (parser->methods->object_start && FAILURE == parser->methods->object_start(parser)) { if (parser->methods.object_start && FAILURE == parser->methods.object_start(parser)) {
YYERROR; YYERROR;
} }
} }
@ -1476,7 +1476,7 @@ yyreduce:
{ {
ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-1].value)); ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-1].value));
PHP_JSON_DEPTH_DEC; PHP_JSON_DEPTH_DEC;
if (parser->methods->object_end && FAILURE == parser->methods->object_end(parser, &(yyval.value))) { if (parser->methods.object_end && FAILURE == parser->methods.object_end(parser, &(yyval.value))) {
YYERROR; YYERROR;
} }
} }
@ -1495,7 +1495,7 @@ yyreduce:
case 8: case 8:
{ {
parser->methods->object_create(parser, &(yyval.value)); parser->methods.object_create(parser, &(yyval.value));
} }
break; break;
@ -1503,8 +1503,8 @@ yyreduce:
case 10: case 10:
{ {
parser->methods->object_create(parser, &(yyval.value)); parser->methods.object_create(parser, &(yyval.value));
if (parser->methods->object_update(parser, &(yyval.value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val) == FAILURE) { if (parser->methods.object_update(parser, &(yyval.value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val) == FAILURE) {
YYERROR; YYERROR;
} }
} }
@ -1514,7 +1514,7 @@ yyreduce:
case 11: case 11:
{ {
if (parser->methods->object_update(parser, &(yyvsp[-2].value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val) == FAILURE) { if (parser->methods.object_update(parser, &(yyvsp[-2].value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val) == FAILURE) {
YYERROR; YYERROR;
} }
ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-2].value)); ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-2].value));
@ -1551,7 +1551,7 @@ yyreduce:
{ {
PHP_JSON_DEPTH_INC; PHP_JSON_DEPTH_INC;
if (parser->methods->array_start && FAILURE == parser->methods->array_start(parser)) { if (parser->methods.array_start && FAILURE == parser->methods.array_start(parser)) {
YYERROR; YYERROR;
} }
} }
@ -1563,7 +1563,7 @@ yyreduce:
{ {
ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-1].value)); ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-1].value));
PHP_JSON_DEPTH_DEC; PHP_JSON_DEPTH_DEC;
if (parser->methods->array_end && FAILURE == parser->methods->array_end(parser, &(yyval.value))) { if (parser->methods.array_end && FAILURE == parser->methods.array_end(parser, &(yyval.value))) {
YYERROR; YYERROR;
} }
} }
@ -1582,7 +1582,7 @@ yyreduce:
case 19: case 19:
{ {
parser->methods->array_create(parser, &(yyval.value)); parser->methods.array_create(parser, &(yyval.value));
} }
break; break;
@ -1590,8 +1590,8 @@ yyreduce:
case 21: case 21:
{ {
parser->methods->array_create(parser, &(yyval.value)); parser->methods.array_create(parser, &(yyval.value));
parser->methods->array_append(parser, &(yyval.value), &(yyvsp[0].value)); parser->methods.array_append(parser, &(yyval.value), &(yyvsp[0].value));
} }
break; break;
@ -1599,7 +1599,7 @@ yyreduce:
case 22: case 22:
{ {
parser->methods->array_append(parser, &(yyvsp[-2].value), &(yyvsp[0].value)); parser->methods.array_append(parser, &(yyvsp[-2].value), &(yyvsp[0].value));
ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-2].value)); ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-2].value));
} }
@ -1947,7 +1947,7 @@ void php_json_parser_init_ex(php_json_parser *parser,
parser->depth = 1; parser->depth = 1;
parser->max_depth = max_depth; parser->max_depth = max_depth;
parser->return_value = return_value; parser->return_value = return_value;
parser->methods = parser_methods; memcpy(&parser->methods, parser_methods, sizeof(php_json_parser_methods));
} }
void php_json_parser_init(php_json_parser *parser, void php_json_parser_init(php_json_parser *parser,

View file

@ -102,7 +102,7 @@ object:
'{' '{'
{ {
PHP_JSON_DEPTH_INC; PHP_JSON_DEPTH_INC;
if (parser->methods->object_start && FAILURE == parser->methods->object_start(parser)) { if (parser->methods.object_start && FAILURE == parser->methods.object_start(parser)) {
YYERROR; YYERROR;
} }
} }
@ -110,7 +110,7 @@ object:
{ {
ZVAL_COPY_VALUE(&$$, &$3); ZVAL_COPY_VALUE(&$$, &$3);
PHP_JSON_DEPTH_DEC; PHP_JSON_DEPTH_DEC;
if (parser->methods->object_end && FAILURE == parser->methods->object_end(parser, &$$)) { if (parser->methods.object_end && FAILURE == parser->methods.object_end(parser, &$$)) {
YYERROR; YYERROR;
} }
} }
@ -128,7 +128,7 @@ object_end:
members: members:
/* empty */ /* empty */
{ {
parser->methods->object_create(parser, &$$); parser->methods.object_create(parser, &$$);
} }
| member | member
; ;
@ -136,14 +136,14 @@ members:
member: member:
pair pair
{ {
parser->methods->object_create(parser, &$$); parser->methods.object_create(parser, &$$);
if (parser->methods->object_update(parser, &$$, $1.key, &$1.val) == FAILURE) { if (parser->methods.object_update(parser, &$$, $1.key, &$1.val) == FAILURE) {
YYERROR; YYERROR;
} }
} }
| member ',' pair | member ',' pair
{ {
if (parser->methods->object_update(parser, &$1, $3.key, &$3.val) == FAILURE) { if (parser->methods.object_update(parser, &$1, $3.key, &$3.val) == FAILURE) {
YYERROR; YYERROR;
} }
ZVAL_COPY_VALUE(&$$, &$1); ZVAL_COPY_VALUE(&$$, &$1);
@ -170,7 +170,7 @@ array:
'[' '['
{ {
PHP_JSON_DEPTH_INC; PHP_JSON_DEPTH_INC;
if (parser->methods->array_start && FAILURE == parser->methods->array_start(parser)) { if (parser->methods.array_start && FAILURE == parser->methods.array_start(parser)) {
YYERROR; YYERROR;
} }
} }
@ -178,7 +178,7 @@ array:
{ {
ZVAL_COPY_VALUE(&$$, &$3); ZVAL_COPY_VALUE(&$$, &$3);
PHP_JSON_DEPTH_DEC; PHP_JSON_DEPTH_DEC;
if (parser->methods->array_end && FAILURE == parser->methods->array_end(parser, &$$)) { if (parser->methods.array_end && FAILURE == parser->methods.array_end(parser, &$$)) {
YYERROR; YYERROR;
} }
} }
@ -196,7 +196,7 @@ array_end:
elements: elements:
/* empty */ /* empty */
{ {
parser->methods->array_create(parser, &$$); parser->methods.array_create(parser, &$$);
} }
| element | element
; ;
@ -204,12 +204,12 @@ elements:
element: element:
value value
{ {
parser->methods->array_create(parser, &$$); parser->methods.array_create(parser, &$$);
parser->methods->array_append(parser, &$$, &$1); parser->methods.array_append(parser, &$$, &$1);
} }
| element ',' value | element ',' value
{ {
parser->methods->array_append(parser, &$1, &$3); parser->methods.array_append(parser, &$1, &$3);
ZVAL_COPY_VALUE(&$$, &$1); ZVAL_COPY_VALUE(&$$, &$1);
} }
| element errlex | element errlex
@ -339,7 +339,7 @@ void php_json_parser_init_ex(php_json_parser *parser,
parser->depth = 1; parser->depth = 1;
parser->max_depth = max_depth; parser->max_depth = max_depth;
parser->return_value = return_value; parser->return_value = return_value;
parser->methods = parser_methods; memcpy(&parser->methods, parser_methods, sizeof(php_json_parser_methods));
} }
void php_json_parser_init(php_json_parser *parser, void php_json_parser_init(php_json_parser *parser,

View file

@ -57,7 +57,7 @@ struct _php_json_parser {
zval *return_value; zval *return_value;
unsigned int depth; unsigned int depth;
int max_depth; int max_depth;
const php_json_parser_methods *methods; php_json_parser_methods methods;
}; };
PHP_JSON_API void php_json_parser_init_ex( PHP_JSON_API void php_json_parser_init_ex(