diff options
| author | Eli Zaretskii | 2024-03-31 09:31:58 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2024-03-31 09:31:58 +0300 |
| commit | 914b00f2079431bd0d44618f1d3558986ac5c282 (patch) | |
| tree | 2ffd8a71a5496da4fdbf039c010881c0a3c1a401 | |
| parent | 411f46fd365bc0008c58e1fa6bee6a60d841da75 (diff) | |
| download | emacs-914b00f2079431bd0d44618f1d3558986ac5c282.tar.gz emacs-914b00f2079431bd0d44618f1d3558986ac5c282.zip | |
; Another round of stylistic fixes in json.c
* src/json.c (json_parser_init, json_parse_object)
(json_parse_value, Fjson_parse_string, json_parse)
(json_create_float, json_create_integer, json_parse_args): Fix
whitespace and indentation.
| -rw-r--r-- | src/json.c | 168 |
1 files changed, 71 insertions, 97 deletions
diff --git a/src/json.c b/src/json.c index b5d5c1f1fe7..908db022c50 100644 --- a/src/json.c +++ b/src/json.c | |||
| @@ -60,44 +60,45 @@ json_parse_args (ptrdiff_t nargs, Lisp_Object *args, | |||
| 60 | 60 | ||
| 61 | /* Start from the back so keyword values appearing first take | 61 | /* Start from the back so keyword values appearing first take |
| 62 | precedence. */ | 62 | precedence. */ |
| 63 | for (ptrdiff_t i = nargs; i > 0; i -= 2) { | 63 | for (ptrdiff_t i = nargs; i > 0; i -= 2) |
| 64 | Lisp_Object key = args[i - 2]; | 64 | { |
| 65 | Lisp_Object value = args[i - 1]; | 65 | Lisp_Object key = args[i - 2]; |
| 66 | if (parse_object_types && EQ (key, QCobject_type)) | 66 | Lisp_Object value = args[i - 1]; |
| 67 | { | 67 | if (parse_object_types && EQ (key, QCobject_type)) |
| 68 | if (EQ (value, Qhash_table)) | 68 | { |
| 69 | conf->object_type = json_object_hashtable; | 69 | if (EQ (value, Qhash_table)) |
| 70 | else if (EQ (value, Qalist)) | 70 | conf->object_type = json_object_hashtable; |
| 71 | conf->object_type = json_object_alist; | 71 | else if (EQ (value, Qalist)) |
| 72 | else if (EQ (value, Qplist)) | 72 | conf->object_type = json_object_alist; |
| 73 | conf->object_type = json_object_plist; | 73 | else if (EQ (value, Qplist)) |
| 74 | else | 74 | conf->object_type = json_object_plist; |
| 75 | wrong_choice (list3 (Qhash_table, Qalist, Qplist), value); | 75 | else |
| 76 | } | 76 | wrong_choice (list3 (Qhash_table, Qalist, Qplist), value); |
| 77 | else if (parse_object_types && EQ (key, QCarray_type)) | 77 | } |
| 78 | { | 78 | else if (parse_object_types && EQ (key, QCarray_type)) |
| 79 | if (EQ (value, Qarray)) | 79 | { |
| 80 | conf->array_type = json_array_array; | 80 | if (EQ (value, Qarray)) |
| 81 | else if (EQ (value, Qlist)) | 81 | conf->array_type = json_array_array; |
| 82 | conf->array_type = json_array_list; | 82 | else if (EQ (value, Qlist)) |
| 83 | else | 83 | conf->array_type = json_array_list; |
| 84 | wrong_choice (list2 (Qarray, Qlist), value); | 84 | else |
| 85 | } | 85 | wrong_choice (list2 (Qarray, Qlist), value); |
| 86 | else if (EQ (key, QCnull_object)) | 86 | } |
| 87 | conf->null_object = value; | 87 | else if (EQ (key, QCnull_object)) |
| 88 | else if (EQ (key, QCfalse_object)) | 88 | conf->null_object = value; |
| 89 | conf->false_object = value; | 89 | else if (EQ (key, QCfalse_object)) |
| 90 | else if (parse_object_types) | 90 | conf->false_object = value; |
| 91 | wrong_choice (list4 (QCobject_type, | 91 | else if (parse_object_types) |
| 92 | QCarray_type, | 92 | wrong_choice (list4 (QCobject_type, |
| 93 | QCnull_object, | 93 | QCarray_type, |
| 94 | QCfalse_object), | 94 | QCnull_object, |
| 95 | value); | 95 | QCfalse_object), |
| 96 | else | 96 | value); |
| 97 | wrong_choice (list2 (QCnull_object, | 97 | else |
| 98 | QCfalse_object), | 98 | wrong_choice (list2 (QCnull_object, |
| 99 | value); | 99 | QCfalse_object), |
| 100 | } | 100 | value); |
| 101 | } | ||
| 101 | } | 102 | } |
| 102 | 103 | ||
| 103 | /* JSON encoding context. */ | 104 | /* JSON encoding context. */ |
| @@ -824,9 +825,8 @@ json_parser_init (struct json_parser *parser, | |||
| 824 | parser->object_workspace_current = 0; | 825 | parser->object_workspace_current = 0; |
| 825 | 826 | ||
| 826 | parser->byte_workspace = parser->internal_byte_workspace; | 827 | parser->byte_workspace = parser->internal_byte_workspace; |
| 827 | parser->byte_workspace_end | 828 | parser->byte_workspace_end = (parser->byte_workspace |
| 828 | = (parser->byte_workspace | 829 | + JSON_PARSER_INTERNAL_BYTE_WORKSPACE_SIZE); |
| 829 | + JSON_PARSER_INTERNAL_BYTE_WORKSPACE_SIZE); | ||
| 830 | } | 830 | } |
| 831 | 831 | ||
| 832 | static void | 832 | static void |
| @@ -1233,8 +1233,7 @@ json_parse_string (struct json_parser *parser) | |||
| 1233 | if (num2 < 0xdc00 || num2 >= 0xe000) | 1233 | if (num2 < 0xdc00 || num2 >= 0xe000) |
| 1234 | json_signal_error (parser, | 1234 | json_signal_error (parser, |
| 1235 | Qjson_invalid_surrogate_error); | 1235 | Qjson_invalid_surrogate_error); |
| 1236 | num = (0x10000 | 1236 | num = (0x10000 + ((num - 0xd800) << 10 | (num2 - 0xdc00))); |
| 1237 | + ((num - 0xd800) << 10 | (num2 - 0xdc00))); | ||
| 1238 | } | 1237 | } |
| 1239 | else if (num >= 0xdc00 && num < 0xe000) | 1238 | else if (num >= 0xdc00 && num < 0xe000) |
| 1240 | /* is the second half of the surrogate pair without | 1239 | /* is the second half of the surrogate pair without |
| @@ -1307,10 +1306,8 @@ json_create_integer (struct json_parser *parser, | |||
| 1307 | json_byte_workspace_put (parser, 0); | 1306 | json_byte_workspace_put (parser, 0); |
| 1308 | ptrdiff_t len; | 1307 | ptrdiff_t len; |
| 1309 | Lisp_Object result | 1308 | Lisp_Object result |
| 1310 | = string_to_number ((const char *) parser->byte_workspace, 10, | 1309 | = string_to_number ((const char *) parser->byte_workspace, 10, &len); |
| 1311 | &len); | 1310 | if (len != parser->byte_workspace_current - parser->byte_workspace - 1) |
| 1312 | if (len | ||
| 1313 | != parser->byte_workspace_current - parser->byte_workspace - 1) | ||
| 1314 | json_signal_error (parser, Qjson_error); | 1311 | json_signal_error (parser, Qjson_error); |
| 1315 | return result; | 1312 | return result; |
| 1316 | } | 1313 | } |
| @@ -1323,12 +1320,10 @@ json_create_float (struct json_parser *parser) | |||
| 1323 | errno = 0; | 1320 | errno = 0; |
| 1324 | char *e; | 1321 | char *e; |
| 1325 | double value = strtod ((const char *) parser->byte_workspace, &e); | 1322 | double value = strtod ((const char *) parser->byte_workspace, &e); |
| 1326 | bool out_of_range | 1323 | bool out_of_range = (errno != 0 && (value == HUGE_VAL || value == -HUGE_VAL)); |
| 1327 | = (errno != 0 && (value == HUGE_VAL || value == -HUGE_VAL)); | ||
| 1328 | if (out_of_range) | 1324 | if (out_of_range) |
| 1329 | json_signal_error (parser, Qjson_number_out_of_range); | 1325 | json_signal_error (parser, Qjson_number_out_of_range); |
| 1330 | else if ((const unsigned char *) e | 1326 | else if ((const unsigned char *) e != parser->byte_workspace_current - 1) |
| 1331 | != parser->byte_workspace_current - 1) | ||
| 1332 | json_signal_error (parser, Qjson_error); | 1327 | json_signal_error (parser, Qjson_error); |
| 1333 | else | 1328 | else |
| 1334 | return make_float (value); | 1329 | return make_float (value); |
| @@ -1578,36 +1573,27 @@ json_parse_object (struct json_parser *parser) | |||
| 1578 | { | 1573 | { |
| 1579 | json_parse_string (parser); | 1574 | json_parse_string (parser); |
| 1580 | Lisp_Object key | 1575 | Lisp_Object key |
| 1581 | = make_string_from_utf8 ((char *) | 1576 | = make_string_from_utf8 ((char *) parser->byte_workspace, |
| 1582 | parser->byte_workspace, | ||
| 1583 | (parser->byte_workspace_current | 1577 | (parser->byte_workspace_current |
| 1584 | - parser->byte_workspace)); | 1578 | - parser->byte_workspace)); |
| 1585 | Lisp_Object value | 1579 | Lisp_Object value = json_parse_object_member_value (parser); |
| 1586 | = json_parse_object_member_value (parser); | ||
| 1587 | json_make_object_workspace_for (parser, 2); | 1580 | json_make_object_workspace_for (parser, 2); |
| 1588 | parser->object_workspace[parser->object_workspace_current] | 1581 | parser->object_workspace[parser->object_workspace_current] = key; |
| 1589 | = key; | ||
| 1590 | parser->object_workspace_current++; | 1582 | parser->object_workspace_current++; |
| 1591 | parser->object_workspace[parser->object_workspace_current] | 1583 | parser->object_workspace[parser->object_workspace_current] = value; |
| 1592 | = value; | ||
| 1593 | parser->object_workspace_current++; | 1584 | parser->object_workspace_current++; |
| 1594 | break; | 1585 | break; |
| 1595 | } | 1586 | } |
| 1596 | case json_object_alist: | 1587 | case json_object_alist: |
| 1597 | { | 1588 | { |
| 1598 | ptrdiff_t nbytes; | ||
| 1599 | char *workspace; | ||
| 1600 | |||
| 1601 | json_parse_string (parser); | 1589 | json_parse_string (parser); |
| 1602 | workspace = (char *) parser->byte_workspace; | 1590 | char *workspace = (char *) parser->byte_workspace; |
| 1603 | nbytes = (parser->byte_workspace_current | 1591 | ptrdiff_t nbytes |
| 1604 | - parser->byte_workspace); | 1592 | = parser->byte_workspace_current - parser->byte_workspace; |
| 1605 | 1593 | Lisp_Object key = Fintern (make_string_from_utf8 (workspace, | |
| 1606 | Lisp_Object key | 1594 | nbytes), |
| 1607 | = Fintern (make_string_from_utf8 (workspace, nbytes), | 1595 | Qnil); |
| 1608 | Qnil); | 1596 | Lisp_Object value = json_parse_object_member_value (parser); |
| 1609 | Lisp_Object value | ||
| 1610 | = json_parse_object_member_value (parser); | ||
| 1611 | Lisp_Object nc = Fcons (Fcons (key, value), Qnil); | 1597 | Lisp_Object nc = Fcons (Fcons (key, value), Qnil); |
| 1612 | *cdr = nc; | 1598 | *cdr = nc; |
| 1613 | cdr = xcdr_addr (nc); | 1599 | cdr = xcdr_addr (nc); |
| @@ -1617,12 +1603,10 @@ json_parse_object (struct json_parser *parser) | |||
| 1617 | { | 1603 | { |
| 1618 | json_byte_workspace_put (parser, ':'); | 1604 | json_byte_workspace_put (parser, ':'); |
| 1619 | json_parse_string (parser); | 1605 | json_parse_string (parser); |
| 1620 | Lisp_Object key | 1606 | Lisp_Object key = intern_1 ((char *) parser->byte_workspace, |
| 1621 | = intern_1 ((char *) parser->byte_workspace, | 1607 | (parser->byte_workspace_current |
| 1622 | (parser->byte_workspace_current | 1608 | - parser->byte_workspace)); |
| 1623 | - parser->byte_workspace)); | 1609 | Lisp_Object value = json_parse_object_member_value (parser); |
| 1624 | Lisp_Object value | ||
| 1625 | = json_parse_object_member_value (parser); | ||
| 1626 | Lisp_Object nc = Fcons (key, Qnil); | 1610 | Lisp_Object nc = Fcons (key, Qnil); |
| 1627 | *cdr = nc; | 1611 | *cdr = nc; |
| 1628 | cdr = xcdr_addr (nc); | 1612 | cdr = xcdr_addr (nc); |
| @@ -1655,16 +1639,11 @@ json_parse_object (struct json_parser *parser) | |||
| 1655 | { | 1639 | { |
| 1656 | case json_object_hashtable: | 1640 | case json_object_hashtable: |
| 1657 | { | 1641 | { |
| 1658 | EMACS_INT value; | 1642 | EMACS_INT value = (parser->object_workspace_current - first) / 2; |
| 1659 | 1643 | result = CALLN (Fmake_hash_table, QCtest, Qequal, QCsize, | |
| 1660 | value | 1644 | make_fixed_natnum (value)); |
| 1661 | = (parser->object_workspace_current - first) / 2; | ||
| 1662 | result | ||
| 1663 | = CALLN (Fmake_hash_table, QCtest, Qequal, QCsize, | ||
| 1664 | make_fixed_natnum (value)); | ||
| 1665 | struct Lisp_Hash_Table *h = XHASH_TABLE (result); | 1645 | struct Lisp_Hash_Table *h = XHASH_TABLE (result); |
| 1666 | for (size_t i = first; i < parser->object_workspace_current; | 1646 | for (size_t i = first; i < parser->object_workspace_current; i += 2) |
| 1667 | i += 2) | ||
| 1668 | { | 1647 | { |
| 1669 | hash_hash_t hash; | 1648 | hash_hash_t hash; |
| 1670 | Lisp_Object key = parser->object_workspace[i]; | 1649 | Lisp_Object key = parser->object_workspace[i]; |
| @@ -1717,8 +1696,7 @@ json_parse_value (struct json_parser *parser, int c) | |||
| 1717 | json_byte_workspace_reset (parser); | 1696 | json_byte_workspace_reset (parser); |
| 1718 | json_parse_string (parser); | 1697 | json_parse_string (parser); |
| 1719 | Lisp_Object result | 1698 | Lisp_Object result |
| 1720 | = make_string_from_utf8 ((const char *) | 1699 | = make_string_from_utf8 ((const char *) parser->byte_workspace, |
| 1721 | parser->byte_workspace, | ||
| 1722 | (parser->byte_workspace_current | 1700 | (parser->byte_workspace_current |
| 1723 | - parser->byte_workspace)); | 1701 | - parser->byte_workspace)); |
| 1724 | return result; | 1702 | return result; |
| @@ -1788,15 +1766,13 @@ json_parse (struct json_parser *parser, | |||
| 1788 | break; | 1766 | break; |
| 1789 | case PARSEENDBEHAVIOR_MovePoint: | 1767 | case PARSEENDBEHAVIOR_MovePoint: |
| 1790 | { | 1768 | { |
| 1791 | ptrdiff_t byte | 1769 | ptrdiff_t byte = (PT_BYTE + parser->input_current - parser->input_begin |
| 1792 | = (PT_BYTE + parser->input_current - parser->input_begin | 1770 | + parser->additional_bytes_count); |
| 1793 | + parser->additional_bytes_count); | ||
| 1794 | ptrdiff_t position; | 1771 | ptrdiff_t position; |
| 1795 | if (NILP (BVAR (current_buffer, enable_multibyte_characters))) | 1772 | if (NILP (BVAR (current_buffer, enable_multibyte_characters))) |
| 1796 | position = byte; | 1773 | position = byte; |
| 1797 | else | 1774 | else |
| 1798 | position | 1775 | position = PT + parser->point_of_current_line + parser->current_column; |
| 1799 | = PT + parser->point_of_current_line + parser->current_column; | ||
| 1800 | 1776 | ||
| 1801 | SET_PT_BOTH (position, byte); | 1777 | SET_PT_BOTH (position, byte); |
| 1802 | break; | 1778 | break; |
| @@ -1846,10 +1822,8 @@ usage: (json-parse-string STRING &rest ARGS) */) | |||
| 1846 | json_parse_args (nargs - 1, args + 1, &conf, true); | 1822 | json_parse_args (nargs - 1, args + 1, &conf, true); |
| 1847 | 1823 | ||
| 1848 | struct json_parser p; | 1824 | struct json_parser p; |
| 1849 | const unsigned char *begin | 1825 | const unsigned char *begin = (const unsigned char *) SSDATA (encoded); |
| 1850 | = (const unsigned char *) SSDATA (encoded); | 1826 | json_parser_init (&p, conf, begin, begin + SBYTES (encoded), NULL, NULL); |
| 1851 | json_parser_init (&p, conf, begin, begin + SBYTES (encoded), NULL, | ||
| 1852 | NULL); | ||
| 1853 | record_unwind_protect_ptr (json_parser_done, &p); | 1827 | record_unwind_protect_ptr (json_parser_done, &p); |
| 1854 | 1828 | ||
| 1855 | return unbind_to (count, | 1829 | return unbind_to (count, |