Add std/json CLASS_XXX constants
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 3bf3b36..5c8b4b9 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -21671,6 +21671,32 @@
32, 32, 32, 32,
};
+#define WUFFS_JSON__CLASS_WHITESPACE 0
+
+#define WUFFS_JSON__CLASS_STRING 1
+
+#define WUFFS_JSON__CLASS_COMMA 2
+
+#define WUFFS_JSON__CLASS_COLON 3
+
+#define WUFFS_JSON__CLASS_NUMBER 4
+
+#define WUFFS_JSON__CLASS_OPEN_CURLY_BRACE 5
+
+#define WUFFS_JSON__CLASS_CLOSE_CURLY_BRACE 6
+
+#define WUFFS_JSON__CLASS_OPEN_SQUARE_BRACKET 7
+
+#define WUFFS_JSON__CLASS_CLOSE_SQUARE_BRACKET 8
+
+#define WUFFS_JSON__CLASS_FALSE 9
+
+#define WUFFS_JSON__CLASS_TRUE 10
+
+#define WUFFS_JSON__CLASS_NULL_NAN_INF 11
+
+#define WUFFS_JSON__CLASS_COMMENT 12
+
static const uint8_t //
WUFFS_JSON__LUT_CLASSES[256] //
WUFFS_BASE__POTENTIALLY_UNUSED = {
@@ -22761,7 +22787,7 @@
goto label__2__break;
}
label__2__break:;
- if (0 == (v_expect & 16)) {
+ if (0 == (v_expect & (((uint32_t)(1)) << 4))) {
v_expect = 4104;
goto label__outer__continue;
}
@@ -22771,7 +22797,7 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(0)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
(((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
- if (0 == (v_expect & 256)) {
+ if (0 == (v_expect & (((uint32_t)(1)) << 8))) {
if (self->private_impl.f_quirk_enabled_allow_extra_comma) {
v_expect = 4162;
} else {
@@ -22869,7 +22895,7 @@
} else if (v_class == 5) {
v_vminor = 2113553;
if (v_depth == 0) {
- } else if (0 != (v_expect_after_value & 64)) {
+ } else if (0 != (v_expect_after_value & (((uint32_t)(1)) << 6))) {
v_vminor = 2113601;
} else {
v_vminor = 2113569;
@@ -22924,7 +22950,7 @@
} else if (v_class == 7) {
v_vminor = 2105361;
if (v_depth == 0) {
- } else if (0 != (v_expect_after_value & 64)) {
+ } else if (0 != (v_expect_after_value & (((uint32_t)(1)) << 6))) {
v_vminor = 2105409;
} else {
v_vminor = 2105377;
diff --git a/std/json/common_consts.wuffs b/std/json/common_consts.wuffs
index c8f8528..7246351 100644
--- a/std/json/common_consts.wuffs
+++ b/std/json/common_consts.wuffs
@@ -187,6 +187,20 @@
// 8 9 A B C D E F
]
+pri const CLASS_WHITESPACE base.u8 = 0x00
+pri const CLASS_STRING base.u8 = 0x01
+pri const CLASS_COMMA base.u8 = 0x02
+pri const CLASS_COLON base.u8 = 0x03
+pri const CLASS_NUMBER base.u8 = 0x04
+pri const CLASS_OPEN_CURLY_BRACE base.u8 = 0x05
+pri const CLASS_CLOSE_CURLY_BRACE base.u8 = 0x06
+pri const CLASS_OPEN_SQUARE_BRACKET base.u8 = 0x07
+pri const CLASS_CLOSE_SQUARE_BRACKET base.u8 = 0x08
+pri const CLASS_FALSE base.u8 = 0x09
+pri const CLASS_TRUE base.u8 = 0x0A
+pri const CLASS_NULL_NAN_INF base.u8 = 0x0B
+pri const CLASS_COMMENT base.u8 = 0x0C
+
// LUT_CLASSES is:
// - 0x00 (bitmask 0x0001) is CLASS_WHITESPACE.
// - 0x01 (bitmask 0x0002) is CLASS_STRING.
diff --git a/std/json/decode_json.wuffs b/std/json/decode_json.wuffs
index 19b984f..ef7dc6c 100644
--- a/std/json/decode_json.wuffs
+++ b/std/json/decode_json.wuffs
@@ -202,7 +202,7 @@
c = args.src.peek_u8()
class = LUT_CLASSES[c]
- if class <> 0x00 { // 0x00 is CLASS_WHITESPACE.
+ if class <> CLASS_WHITESPACE {
break.ws
}
args.src.skip32_fast!(actual: 1, worst_case: 1)
@@ -244,7 +244,7 @@
assert args.dst.available() > 0
assert args.src.available() > 0
- if class == 0x01 { // 0x01 is CLASS_STRING.
+ if class == CLASS_STRING {
// -------- BEGIN parse strings.
// Emit the leading '"'.
args.dst.write_simple_token_fast!(
@@ -841,14 +841,14 @@
// As above, expect must have contained EXPECT_STRING. If it didn't
// also contain EXPECT_NUMBER then we were parsing an object key
// and the next token should be ':'.
- if 0 == (expect & 0x0010) { // 0x0010 is (1 << CLASS_NUMBER).
+ if 0 == (expect & ((1 as base.u32) << CLASS_NUMBER)) {
expect = 0x1008 // 0x1008 is EXPECT_COLON.
continue.outer
}
break.goto_parsed_a_leaf_value
// -------- END parse strings.
- } else if class == 0x02 { // 0x02 is CLASS_COMMA.
+ } else if class == CLASS_COMMA {
args.src.skip32_fast!(actual: 1, worst_case: 1)
// The ',' is filler.
args.dst.write_simple_token_fast!(
@@ -858,7 +858,7 @@
length: 1)
// What's valid after a comma depends on whether or not we're in an
// array or an object.
- if 0 == (expect & 0x0100) { // 0x0100 is (1 << CLASS_CLOSE_SQUARE_BRACKET).
+ if 0 == (expect & ((1 as base.u32) << CLASS_CLOSE_SQUARE_BRACKET)) {
if this.quirk_enabled_allow_extra_comma {
expect = 0x1042 // 0x1042 is EXPECT_STRING | EXPECT_CLOSE_CURLY_BRACE.
} else {
@@ -873,7 +873,7 @@
}
continue.outer
- } else if class == 0x03 { // 0x03 is CLASS_COLON.
+ } else if class == CLASS_COLON {
args.src.skip32_fast!(actual: 1, worst_case: 1)
// The ':' is filler.
args.dst.write_simple_token_fast!(
@@ -884,7 +884,7 @@
expect = 0x1EB2 // 0x1EB2 is EXPECT_VALUE.
continue.outer
- } else if class == 0x04 { // 0x04 is CLASS_NUMBER.
+ } else if class == CLASS_NUMBER {
// -------- BEGIN parse numbers.
while true,
pre args.dst.available() > 0,
@@ -934,11 +934,11 @@
break.goto_parsed_a_leaf_value
// -------- END parse numbers.
- } else if class == 0x05 { // 0x05 is CLASS_OPEN_CURLY_BRACE.
+ } else if class == CLASS_OPEN_CURLY_BRACE {
vminor = 0x20_4011
if depth == 0 {
// No-op.
- } else if 0 <> (expect_after_value & 0x0040) { // 0x0040 is (1 << CLASS_CLOSE_CURLY_BRACE).
+ } else if 0 <> (expect_after_value & ((1 as base.u32) << CLASS_CLOSE_CURLY_BRACE)) {
vminor = 0x20_4041
} else {
vminor = 0x20_4021
@@ -961,7 +961,7 @@
expect_after_value = 0x1044 // 0x1044 is (EXPECT_CURLY_CLOSE_BRACE | EXPECT_COMMA).
continue.outer
- } else if class == 0x06 { // 0x06 is CLASS_CLOSE_CURLY_BRACE.
+ } else if class == CLASS_CLOSE_CURLY_BRACE {
args.src.skip32_fast!(actual: 1, worst_case: 1)
if depth <= 1 {
args.dst.write_simple_token_fast!(
@@ -995,11 +995,11 @@
}
continue.outer
- } else if class == 0x07 { // 0x07 is CLASS_OPEN_SQUARE_BRACKET.
+ } else if class == CLASS_OPEN_SQUARE_BRACKET {
vminor = 0x20_2011
if depth == 0 {
// No-op.
- } else if 0 <> (expect_after_value & 0x0040) { // 0x0040 is (1 << CLASS_CLOSE_CURLY_BRACE).
+ } else if 0 <> (expect_after_value & ((1 as base.u32) << CLASS_CLOSE_CURLY_BRACE)) {
vminor = 0x20_2041
} else {
vminor = 0x20_2021
@@ -1022,7 +1022,7 @@
expect_after_value = 0x1104 // 0x1104 is (EXPECT_CLOSE_SQUARE_BRACKET | EXPECT_COMMA).
continue.outer
- } else if class == 0x08 { // 0x08 is CLASS_CLOSE_SQUARE_BRACKET.
+ } else if class == CLASS_CLOSE_SQUARE_BRACKET {
args.src.skip32_fast!(actual: 1, worst_case: 1)
if depth <= 1 {
args.dst.write_simple_token_fast!(
@@ -1056,7 +1056,7 @@
}
continue.outer
- } else if class == 0x09 { // 0x09 is CLASS_FALSE.
+ } else if class == CLASS_FALSE {
match = args.src.match7(a: '\x05false'le)
if match == 0 {
args.dst.write_simple_token_fast!(
@@ -1074,7 +1074,7 @@
continue.outer
}
- } else if class == 0x0A { // 0x0A is CLASS_TRUE.
+ } else if class == CLASS_TRUE {
match = args.src.match7(a: '\x04true'le)
if match == 0 {
args.dst.write_simple_token_fast!(
@@ -1092,7 +1092,7 @@
continue.outer
}
- } else if class == 0x0B { // 0x0B is CLASS_NULL_NAN_INF.
+ } else if class == CLASS_NULL_NAN_INF {
match = args.src.match7(a: '\x04null'le)
if match == 0 {
args.dst.write_simple_token_fast!(
@@ -1115,7 +1115,7 @@
break.goto_parsed_a_leaf_value
}
- } else if class == 0x0C { // 0x0C is CLASS_COMMENT.
+ } else if class == CLASS_COMMENT {
if this.quirk_enabled_allow_comment_block or this.quirk_enabled_allow_comment_line {
this.decode_comment?(dst: args.dst, src: args.src)
continue.outer
@@ -1630,7 +1630,7 @@
}
c = args.src.peek_u8()
- if LUT_CLASSES[c] <> 0x00 { // 0x00 is CLASS_WHITESPACE.
+ if LUT_CLASSES[c] <> CLASS_WHITESPACE {
if whitespace_length > 0 {
args.dst.write_simple_token_fast!(
value_major: 0, value_minor: 0, continued: 0, length: whitespace_length)