aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2024-03-31 09:31:58 +0300
committerEli Zaretskii2024-03-31 09:31:58 +0300
commit914b00f2079431bd0d44618f1d3558986ac5c282 (patch)
tree2ffd8a71a5496da4fdbf039c010881c0a3c1a401
parent411f46fd365bc0008c58e1fa6bee6a60d841da75 (diff)
downloademacs-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.c168
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
832static void 832static 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,