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)