Remove wuffs_base__token__link_prev
diff --git a/doc/note/tokens.md b/doc/note/tokens.md
index 8a9bde0..5577f2d 100644
--- a/doc/note/tokens.md
+++ b/doc/note/tokens.md
@@ -36,25 +36,22 @@
A token is just a `uint64_t`. The broad divisions are:
-- Bits 63 .. 18 (46 bits) is the value.
-- Bits 17 .. 16 (2 bits) is `LP` and `LN` (`link_prev` and `link_next`).
+- Bits 63 .. 17 (47 bits) is the value.
+- Bits 16 .. 16 (1 bit) is the `continued` bit.
- Bits 15 .. 0 (16 bits) is the length.
-The `LP` and `LN` bits denote tokens that are part of a multi-token chain:
-
-- `LP` means that this token is not the first (there is a previous token).
-- `LN` means that this token is not the last (there is a next token).
-
-A stand-alone token will have both link bits set to zero.
+The `continued` bit is whether that the token chain for this token also
+contains the next token. The final token in a token chain, including
+stand-alone tokens, will have the `continued` bit set to zero.
```
-+-----+-------------+-------+-------------+-----+-----+-----------+
-| 1 | 21 | 3 | 21 | 1 | 1 | 16 |
-+-----+-------------+-------+-------------+-----+-----+-----------+
-[..................value..................] LP LN length
-[..1..|..........~value_extension.........]
-[..0..|.value_major.|.....value_minor.....]
-[..0..|......0......|..VBC..|.....VBD.....]
++-----+-------------+-------+---------------+-----+-----------+
+| 1 | 21 | 3 | 22 | 1 | 16 |
++-----+-------------+-------+---------------+-----+-----------+
+[...................value...................] con length
+[..1..|...........~value_extension..........]
+[..0..|.value_major.|......value_minor......]
+[..0..|......0......|..VBC..|......VBD......]
```
The value bits can be sub-divided in multiple ways. First, the high bit:
@@ -64,7 +61,7 @@
### Extended Tokens
-- Bits 62 .. 18 (45 bits) is the bitwise-not (~) of the `value_extension`.
+- Bits 62 .. 17 (46 bits) is the bitwise-not (~) of the `value_extension`.
Extended tokens are typically part of a multi-token chain whose first token is
a simple token that provides the semantics for each `value_extension`.
@@ -73,7 +70,7 @@
### Simple Tokens
- Bits 62 .. 42 (21 bits) is the `value_major`.
-- Bits 41 .. 18 (24 bits) is the `value_minor`.
+- Bits 41 .. 17 (25 bits) is the `value_minor`.
The `value_major` is a 21-bit [Base38](doc/note/base38-and-fourcc.md) number.
For example, an HTML tokenizer might produce a combination of "base" tokens
@@ -90,13 +87,13 @@
A zero `value_major` is reserved for Wuffs' built-in "base" package. The
`value_minor` is further sub-divided:
- - Bits 41 .. 39 (3 bits) is the `VBC` (`value_base_category`).
- - Bits 38 .. 18 (21 bits) is the `VBD` (`value_base_detail`).
+- Bits 41 .. 38 (4 bits) is the `VBC` (`value_base_category`).
+- Bits 37 .. 17 (21 bits) is the `VBD` (`value_base_detail`).
-The high 46 bits (bits 63 .. 18) only have `VBC` and `VBD` semantics when the
+The high 47 bits (bits 63 .. 17) only have `VBC` and `VBD` semantics when the
high 22 bits (the `extended` and `value_major` parts) are all zero. An
-equivalent test is that the high 25 bits (the notional `VBC`), as either an
-unsigned integer or a sign-extended integer, is in the range `0 ..= 7`.
+equivalent test is that the high 26 bits (the notional `VBC`), as either an
+unsigned integer or a sign-extended integer, is in the range `0 ..= 15`.
These `VBC`s organize tokens into broad groups, generally applicable (as
opposed to being e.g. HTML-specific or JSON-specific). For example, strings and
@@ -142,15 +139,17 @@
## Example Token Stream
```
-$ gcc script/print-json-token-debug-format.c && \
-> ./a.out -all-tokens -human-readable < test/data/json-things.formatted.json
-pos=0x00000000 len=0x0001 link=0b00 vbc=1:Structure........ vbd=0x004011
-pos=0x00000001 len=0x0005 link=0b00 vbc=0:Filler........... vbd=0x000000
-pos=0x00000006 len=0x0001 link=0b01 vbc=2:String........... vbd=0x000013
-pos=0x00000007 len=0x0002 link=0b11 vbc=2:String........... vbd=0x000021
-pos=0x00000009 len=0x0001 link=0b10 vbc=2:String........... vbd=0x000013
+$ gcc script/print-json-token-debug-format.c -o pjtdf
+$ ./pjtdf -all-tokens -human-readable < test/data/json-things.formatted.json
+pos=0x00000000 len=0x0001 con=0 vbc=1:Structure........ vbd=0x004011
+pos=0x00000001 len=0x0005 con=0 vbc=0:Filler........... vbd=0x000000
+pos=0x00000006 len=0x0001 con=1 vbc=2:String........... vbd=0x000013
+pos=0x00000007 len=0x0002 con=1 vbc=2:String........... vbd=0x000021
+pos=0x00000009 len=0x0001 con=0 vbc=2:String........... vbd=0x000013
etc
-pos=0x00000094 len=0x0001 link=0b10 vbc=2:String........... vbd=0x000013
-pos=0x00000095 len=0x0001 link=0b00 vbc=0:Filler........... vbd=0x000000
-pos=0x00000096 len=0x0001 link=0b00 vbc=1:Structure........ vbd=0x001042
+pos=0x00000090 len=0x0002 con=1 vbc=3:UnicodeCodePoint. vbd=0x00000A
+pos=0x00000092 len=0x0002 con=1 vbc=3:UnicodeCodePoint. vbd=0x00000A
+pos=0x00000094 len=0x0001 con=0 vbc=2:String........... vbd=0x000013
+pos=0x00000095 len=0x0001 con=0 vbc=0:Filler........... vbd=0x000000
+pos=0x00000096 len=0x0001 con=0 vbc=1:Structure........ vbd=0x001042
```
diff --git a/example/jsonfindptrs/jsonfindptrs.cc b/example/jsonfindptrs/jsonfindptrs.cc
index 2bf74f9..5c5816f 100644
--- a/example/jsonfindptrs/jsonfindptrs.cc
+++ b/example/jsonfindptrs/jsonfindptrs.cc
@@ -674,7 +674,7 @@
return Result("main: internal error: unexpected token");
}
- if (!tsr.token.link_next()) {
+ if (!tsr.token.continued()) {
break;
}
tsr = ts.next();
diff --git a/example/jsonptr/jsonptr.cc b/example/jsonptr/jsonptr.cc
index e4aa8a7..7c3dc2c 100644
--- a/example/jsonptr/jsonptr.cc
+++ b/example/jsonptr/jsonptr.cc
@@ -979,15 +979,15 @@
return "main: internal error: unexpected string-token conversion";
}
- if (t.link_next()) {
+ if (t.continued()) {
return nullptr;
}
TRY(write_dst("\"", 1));
goto after_value;
case WUFFS_BASE__TOKEN__VBC__UNICODE_CODE_POINT:
- if (!t.link_next()) {
- return "main: internal error: unexpected unlinked token";
+ if (!t.continued()) {
+ return "main: internal error: unexpected non-continued UCP token";
}
TRY(handle_unicode_code_point(vbd));
g_query.incremental_match_code_point(vbd);
@@ -1049,12 +1049,12 @@
// Skip filler tokens (e.g. whitespace).
if (t.value() == 0) {
- start_of_token_chain = !t.link_next();
+ start_of_token_chain = !t.continued();
continue;
}
const char* z = handle_token(t, start_of_token_chain);
- start_of_token_chain = !t.link_next();
+ start_of_token_chain = !t.continued();
if (z == nullptr) {
continue;
} else if (z == g_eod) {
diff --git a/fuzz/c/std/json_fuzzer.c b/fuzz/c/std/json_fuzzer.c
index c3ae16e..916237c 100644
--- a/fuzz/c/std/json_fuzzer.c
+++ b/fuzz/c/std/json_fuzzer.c
@@ -196,7 +196,7 @@
// After a complete JSON value, update the parity (even/odd count) of the
// container.
- if (!wuffs_base__token__link_next(&t) &&
+ if (!wuffs_base__token__continued(&t) &&
(vbc != WUFFS_BASE__TOKEN__VBC__FILLER) &&
((vbc != WUFFS_BASE__TOKEN__VBC__STRUCTURE) ||
(vbd & WUFFS_BASE__TOKEN__VBD__STRUCTURE__POP))) {
@@ -368,8 +368,8 @@
if (depth != 0) {
return "fuzz: internal error: decoded OK but final depth was not zero";
- } else if (wuffs_base__token__link_next(&final_token)) {
- return "fuzz: internal error: decoded OK but final token had link_next";
+ } else if (wuffs_base__token__continued(&final_token)) {
+ return "fuzz: internal error: decoded OK but final token was continued";
}
return NULL;
}
diff --git a/internal/cgen/base/token-public.h b/internal/cgen/base/token-public.h
index aa37f13..eb05a76 100644
--- a/internal/cgen/base/token-public.h
+++ b/internal/cgen/base/token-public.h
@@ -29,8 +29,7 @@
inline int64_t value_base_category() const;
inline uint64_t value_minor() const;
inline uint64_t value_base_detail() const;
- inline bool link_prev() const;
- inline bool link_next() const;
+ inline bool continued() const;
inline uint64_t length() const;
#endif // __cplusplus
@@ -47,18 +46,15 @@
#define WUFFS_BASE__TOKEN__LENGTH__MAX_INCL 0xFFFF
-#define WUFFS_BASE__TOKEN__VALUE__SHIFT 18
-#define WUFFS_BASE__TOKEN__VALUE_EXTENSION__SHIFT 18
+#define WUFFS_BASE__TOKEN__VALUE__SHIFT 17
+#define WUFFS_BASE__TOKEN__VALUE_EXTENSION__SHIFT 17
#define WUFFS_BASE__TOKEN__VALUE_MAJOR__SHIFT 42
-#define WUFFS_BASE__TOKEN__VALUE_BASE_CATEGORY__SHIFT 39
-#define WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT 18
-#define WUFFS_BASE__TOKEN__VALUE_BASE_DETAIL__SHIFT 18
-#define WUFFS_BASE__TOKEN__LINK__SHIFT 16
+#define WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT 17
+#define WUFFS_BASE__TOKEN__VALUE_BASE_CATEGORY__SHIFT 38
+#define WUFFS_BASE__TOKEN__VALUE_BASE_DETAIL__SHIFT 17
+#define WUFFS_BASE__TOKEN__CONTINUED__SHIFT 16
#define WUFFS_BASE__TOKEN__LENGTH__SHIFT 0
-#define WUFFS_BASE__TOKEN__LINK_PREV 0x20000
-#define WUFFS_BASE__TOKEN__LINK_NEXT 0x10000
-
// --------
#define WUFFS_BASE__TOKEN__VBC__FILLER 0
@@ -179,7 +175,7 @@
static inline uint64_t //
wuffs_base__token__value_minor(const wuffs_base__token* t) {
- return (t->repr >> WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) & 0xFFFFFF;
+ return (t->repr >> WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) & 0x1FFFFFF;
}
static inline uint64_t //
@@ -188,13 +184,8 @@
}
static inline bool //
-wuffs_base__token__link_prev(const wuffs_base__token* t) {
- return t->repr & WUFFS_BASE__TOKEN__LINK_PREV;
-}
-
-static inline bool //
-wuffs_base__token__link_next(const wuffs_base__token* t) {
- return t->repr & WUFFS_BASE__TOKEN__LINK_NEXT;
+wuffs_base__token__continued(const wuffs_base__token* t) {
+ return t->repr & 0x10000;
}
static inline uint64_t //
@@ -235,13 +226,8 @@
}
inline bool //
-wuffs_base__token::link_prev() const {
- return wuffs_base__token__link_prev(this);
-}
-
-inline bool //
-wuffs_base__token::link_next() const {
- return wuffs_base__token__link_next(this);
+wuffs_base__token::continued() const {
+ return wuffs_base__token__continued(this);
}
inline uint64_t //
diff --git a/internal/cgen/builtin.go b/internal/cgen/builtin.go
index 197c7f3..5eca912 100644
--- a/internal/cgen/builtin.go
+++ b/internal/cgen/builtin.go
@@ -350,7 +350,7 @@
if err := g.writeExpr(b, args[2].AsArg().Value(), depth); err != nil {
return err
}
- b.writes(")) << WUFFS_BASE__TOKEN__LINK__SHIFT) | (((uint64_t)(")
+ b.writes(")) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) | (((uint64_t)(")
}
if err := g.writeExpr(b, args[3].AsArg().Value(), depth); err != nil {
diff --git a/internal/cgen/data.go b/internal/cgen/data.go
index 7d5d0e6..82a3973 100644
--- a/internal/cgen/data.go
+++ b/internal/cgen/data.go
@@ -382,9 +382,9 @@
""
const baseTokenPublicH = "" +
- "// ---------------- Tokens\n\n// wuffs_base__token is an element of a byte stream's tokenization.\n//\n// See https://github.com/google/wuffs/blob/master/doc/note/tokens.md\ntypedef struct {\n uint64_t repr;\n\n#ifdef __cplusplus\n inline int64_t value() const;\n inline int64_t value_extension() const;\n inline int64_t value_major() const;\n inline int64_t value_base_category() const;\n inline uint64_t value_minor() const;\n inline uint64_t value_base_detail() const;\n inline bool link_prev() const;\n inline bool link_next() const;\n inline uint64_t length() const;\n#endif // __cplusplus\n\n} wuffs_base__token;\n\nstatic inline wuffs_base__token //\nwuffs_base__make_token(uint64_t repr) {\n wuffs_base__token ret;\n ret.repr = repr;\n return ret;\n}\n\n " +
+ "// ---------------- Tokens\n\n// wuffs_base__token is an element of a byte stream's tokenization.\n//\n// See https://github.com/google/wuffs/blob/master/doc/note/tokens.md\ntypedef struct {\n uint64_t repr;\n\n#ifdef __cplusplus\n inline int64_t value() const;\n inline int64_t value_extension() const;\n inline int64_t value_major() const;\n inline int64_t value_base_category() const;\n inline uint64_t value_minor() const;\n inline uint64_t value_base_detail() const;\n inline bool continued() const;\n inline uint64_t length() const;\n#endif // __cplusplus\n\n} wuffs_base__token;\n\nstatic inline wuffs_base__token //\nwuffs_base__make_token(uint64_t repr) {\n wuffs_base__token ret;\n ret.repr = repr;\n return ret;\n}\n\n " +
"" +
- "// --------\n\n#define WUFFS_BASE__TOKEN__LENGTH__MAX_INCL 0xFFFF\n\n#define WUFFS_BASE__TOKEN__VALUE__SHIFT 18\n#define WUFFS_BASE__TOKEN__VALUE_EXTENSION__SHIFT 18\n#define WUFFS_BASE__TOKEN__VALUE_MAJOR__SHIFT 42\n#define WUFFS_BASE__TOKEN__VALUE_BASE_CATEGORY__SHIFT 39\n#define WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT 18\n#define WUFFS_BASE__TOKEN__VALUE_BASE_DETAIL__SHIFT 18\n#define WUFFS_BASE__TOKEN__LINK__SHIFT 16\n#define WUFFS_BASE__TOKEN__LENGTH__SHIFT 0\n\n#define WUFFS_BASE__TOKEN__LINK_PREV 0x20000\n#define WUFFS_BASE__TOKEN__LINK_NEXT 0x10000\n\n " +
+ "// --------\n\n#define WUFFS_BASE__TOKEN__LENGTH__MAX_INCL 0xFFFF\n\n#define WUFFS_BASE__TOKEN__VALUE__SHIFT 17\n#define WUFFS_BASE__TOKEN__VALUE_EXTENSION__SHIFT 17\n#define WUFFS_BASE__TOKEN__VALUE_MAJOR__SHIFT 42\n#define WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT 17\n#define WUFFS_BASE__TOKEN__VALUE_BASE_CATEGORY__SHIFT 38\n#define WUFFS_BASE__TOKEN__VALUE_BASE_DETAIL__SHIFT 17\n#define WUFFS_BASE__TOKEN__CONTINUED__SHIFT 16\n#define WUFFS_BASE__TOKEN__LENGTH__SHIFT 0\n\n " +
"" +
"// --------\n\n#define WUFFS_BASE__TOKEN__VBC__FILLER 0\n#define WUFFS_BASE__TOKEN__VBC__STRUCTURE 1\n#define WUFFS_BASE__TOKEN__VBC__STRING 2\n#define WUFFS_BASE__TOKEN__VBC__UNICODE_CODE_POINT 3\n#define WUFFS_BASE__TOKEN__VBC__LITERAL 4\n#define WUFFS_BASE__TOKEN__VBC__NUMBER 5\n\n " +
"" +
@@ -401,8 +401,8 @@
"ttle-endian or text. For binary formats, the\n// token length discriminates e.g. u16 little-endian vs u32 little-endian.\n#define WUFFS_BASE__TOKEN__VBD__NUMBER__FORMAT_BINARY_BIG_ENDIAN 0x00100\n#define WUFFS_BASE__TOKEN__VBD__NUMBER__FORMAT_BINARY_LITTLE_ENDIAN 0x00200\n#define WUFFS_BASE__TOKEN__VBD__NUMBER__FORMAT_TEXT 0x00400\n\n" +
"" +
"// --------\n\n// wuffs_base__token__value returns the token's high 46 bits, sign-extended. A\n// negative value means an extended token, non-negative means a simple token.\nstatic inline int64_t //\nwuffs_base__token__value(const wuffs_base__token* t) {\n return ((int64_t)(t->repr)) >> WUFFS_BASE__TOKEN__VALUE__SHIFT;\n}\n\n// wuffs_base__token__value_extension returns a negative value if the token was\n// not an extended token.\nstatic inline int64_t //\nwuffs_base__token__value_extension(const wuffs_base__token* t) {\n return (~(int64_t)(t->repr)) >> WUFFS_BASE__TOKEN__VALUE_EXTENSION__SHIFT;\n}\n\n// wuffs_base__token__value_major returns a negative value if the token was not\n// a simple token.\nstatic inline int64_t //\nwuffs_base__token__value_major(const wuffs_base__token* t) {\n return ((int64_t)(t->repr)) >> WUFFS_BASE__TOKEN__VALUE_MAJOR__SHIFT;\n}\n\n// wuffs_base__token__value_base_category returns a negative value if the token\n// was not a simple token.\nstatic inline int64_t //\nwuffs_base__token__value_base_cat" +
- "egory(const wuffs_base__token* t) {\n return ((int64_t)(t->repr)) >> WUFFS_BASE__TOKEN__VALUE_BASE_CATEGORY__SHIFT;\n}\n\nstatic inline uint64_t //\nwuffs_base__token__value_minor(const wuffs_base__token* t) {\n return (t->repr >> WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) & 0xFFFFFF;\n}\n\nstatic inline uint64_t //\nwuffs_base__token__value_base_detail(const wuffs_base__token* t) {\n return (t->repr >> WUFFS_BASE__TOKEN__VALUE_BASE_DETAIL__SHIFT) & 0x1FFFFF;\n}\n\nstatic inline bool //\nwuffs_base__token__link_prev(const wuffs_base__token* t) {\n return t->repr & WUFFS_BASE__TOKEN__LINK_PREV;\n}\n\nstatic inline bool //\nwuffs_base__token__link_next(const wuffs_base__token* t) {\n return t->repr & WUFFS_BASE__TOKEN__LINK_NEXT;\n}\n\nstatic inline uint64_t //\nwuffs_base__token__length(const wuffs_base__token* t) {\n return (t->repr >> WUFFS_BASE__TOKEN__LENGTH__SHIFT) & 0xFFFF;\n}\n\n#ifdef __cplusplus\n\ninline int64_t //\nwuffs_base__token::value() const {\n return wuffs_base__token__value(this);\n}\n\ninline int64_t //\nwuffs_base_" +
- "_token::value_extension() const {\n return wuffs_base__token__value_extension(this);\n}\n\ninline int64_t //\nwuffs_base__token::value_major() const {\n return wuffs_base__token__value_major(this);\n}\n\ninline int64_t //\nwuffs_base__token::value_base_category() const {\n return wuffs_base__token__value_base_category(this);\n}\n\ninline uint64_t //\nwuffs_base__token::value_minor() const {\n return wuffs_base__token__value_minor(this);\n}\n\ninline uint64_t //\nwuffs_base__token::value_base_detail() const {\n return wuffs_base__token__value_base_detail(this);\n}\n\ninline bool //\nwuffs_base__token::link_prev() const {\n return wuffs_base__token__link_prev(this);\n}\n\ninline bool //\nwuffs_base__token::link_next() const {\n return wuffs_base__token__link_next(this);\n}\n\ninline uint64_t //\nwuffs_base__token::length() const {\n return wuffs_base__token__length(this);\n}\n\n#endif // __cplusplus\n\n" +
+ "egory(const wuffs_base__token* t) {\n return ((int64_t)(t->repr)) >> WUFFS_BASE__TOKEN__VALUE_BASE_CATEGORY__SHIFT;\n}\n\nstatic inline uint64_t //\nwuffs_base__token__value_minor(const wuffs_base__token* t) {\n return (t->repr >> WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) & 0x1FFFFFF;\n}\n\nstatic inline uint64_t //\nwuffs_base__token__value_base_detail(const wuffs_base__token* t) {\n return (t->repr >> WUFFS_BASE__TOKEN__VALUE_BASE_DETAIL__SHIFT) & 0x1FFFFF;\n}\n\nstatic inline bool //\nwuffs_base__token__continued(const wuffs_base__token* t) {\n return t->repr & 0x10000;\n}\n\nstatic inline uint64_t //\nwuffs_base__token__length(const wuffs_base__token* t) {\n return (t->repr >> WUFFS_BASE__TOKEN__LENGTH__SHIFT) & 0xFFFF;\n}\n\n#ifdef __cplusplus\n\ninline int64_t //\nwuffs_base__token::value() const {\n return wuffs_base__token__value(this);\n}\n\ninline int64_t //\nwuffs_base__token::value_extension() const {\n return wuffs_base__token__value_extension(this);\n}\n\ninline int64_t //\nwuffs_base__token::value_major() const {\n retu" +
+ "rn wuffs_base__token__value_major(this);\n}\n\ninline int64_t //\nwuffs_base__token::value_base_category() const {\n return wuffs_base__token__value_base_category(this);\n}\n\ninline uint64_t //\nwuffs_base__token::value_minor() const {\n return wuffs_base__token__value_minor(this);\n}\n\ninline uint64_t //\nwuffs_base__token::value_base_detail() const {\n return wuffs_base__token__value_base_detail(this);\n}\n\ninline bool //\nwuffs_base__token::continued() const {\n return wuffs_base__token__continued(this);\n}\n\ninline uint64_t //\nwuffs_base__token::length() const {\n return wuffs_base__token__length(this);\n}\n\n#endif // __cplusplus\n\n" +
"" +
"// --------\n\ntypedef WUFFS_BASE__SLICE(wuffs_base__token) wuffs_base__slice_token;\n\nstatic inline wuffs_base__slice_token //\nwuffs_base__make_slice_token(wuffs_base__token* ptr, size_t len) {\n wuffs_base__slice_token ret;\n ret.ptr = ptr;\n ret.len = len;\n return ret;\n}\n\n" +
"" +
diff --git a/lang/builtin/builtin.go b/lang/builtin/builtin.go
index 1bd52cc..34ba6ec 100644
--- a/lang/builtin/builtin.go
+++ b/lang/builtin/builtin.go
@@ -332,8 +332,8 @@
// ---- token_writer
"token_writer.write_simple_token_fast!(" +
- "value_major: u32[..= 0x1F_FFFF], value_minor: u32[..= 0xFF_FFFF]," +
- "link: u32[..= 0x3], length: u32[..= 0xFFFF])",
+ "value_major: u32[..= 0x1F_FFFF], value_minor: u32[..= 0x1FF_FFFF]," +
+ "continued: u32[..= 0x1], length: u32[..= 0xFFFF])",
"token_writer.available() u64",
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 9b0b950..ed2198f 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -1888,8 +1888,7 @@
inline int64_t value_base_category() const;
inline uint64_t value_minor() const;
inline uint64_t value_base_detail() const;
- inline bool link_prev() const;
- inline bool link_next() const;
+ inline bool continued() const;
inline uint64_t length() const;
#endif // __cplusplus
@@ -1906,18 +1905,15 @@
#define WUFFS_BASE__TOKEN__LENGTH__MAX_INCL 0xFFFF
-#define WUFFS_BASE__TOKEN__VALUE__SHIFT 18
-#define WUFFS_BASE__TOKEN__VALUE_EXTENSION__SHIFT 18
+#define WUFFS_BASE__TOKEN__VALUE__SHIFT 17
+#define WUFFS_BASE__TOKEN__VALUE_EXTENSION__SHIFT 17
#define WUFFS_BASE__TOKEN__VALUE_MAJOR__SHIFT 42
-#define WUFFS_BASE__TOKEN__VALUE_BASE_CATEGORY__SHIFT 39
-#define WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT 18
-#define WUFFS_BASE__TOKEN__VALUE_BASE_DETAIL__SHIFT 18
-#define WUFFS_BASE__TOKEN__LINK__SHIFT 16
+#define WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT 17
+#define WUFFS_BASE__TOKEN__VALUE_BASE_CATEGORY__SHIFT 38
+#define WUFFS_BASE__TOKEN__VALUE_BASE_DETAIL__SHIFT 17
+#define WUFFS_BASE__TOKEN__CONTINUED__SHIFT 16
#define WUFFS_BASE__TOKEN__LENGTH__SHIFT 0
-#define WUFFS_BASE__TOKEN__LINK_PREV 0x20000
-#define WUFFS_BASE__TOKEN__LINK_NEXT 0x10000
-
// --------
#define WUFFS_BASE__TOKEN__VBC__FILLER 0
@@ -2038,7 +2034,7 @@
static inline uint64_t //
wuffs_base__token__value_minor(const wuffs_base__token* t) {
- return (t->repr >> WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) & 0xFFFFFF;
+ return (t->repr >> WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) & 0x1FFFFFF;
}
static inline uint64_t //
@@ -2047,13 +2043,8 @@
}
static inline bool //
-wuffs_base__token__link_prev(const wuffs_base__token* t) {
- return t->repr & WUFFS_BASE__TOKEN__LINK_PREV;
-}
-
-static inline bool //
-wuffs_base__token__link_next(const wuffs_base__token* t) {
- return t->repr & WUFFS_BASE__TOKEN__LINK_NEXT;
+wuffs_base__token__continued(const wuffs_base__token* t) {
+ return t->repr & 0x10000;
}
static inline uint64_t //
@@ -2094,13 +2085,8 @@
}
inline bool //
-wuffs_base__token::link_prev() const {
- return wuffs_base__token__link_prev(this);
-}
-
-inline bool //
-wuffs_base__token::link_next() const {
- return wuffs_base__token__link_next(this);
+wuffs_base__token::continued() const {
+ return wuffs_base__token__continued(this);
}
inline uint64_t //
@@ -6135,9 +6121,6 @@
uint32_t v_expect_after_value;
} s_decode_tokens[1];
struct {
- uint32_t v_link_prev;
- } s_decode_comment[1];
- struct {
uint32_t v_neg;
} s_decode_inf_nan[1];
} private_data;
@@ -21233,7 +21216,7 @@
if (v_class == 1) {
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194323)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(1)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
(iop_a_src += 1, wuffs_base__make_empty_struct());
label__string_loop_outer__continue:;
@@ -21252,7 +21235,7 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(v_string_length))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21281,7 +21264,7 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)((v_string_length + 4)))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21298,7 +21281,7 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(65532))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21311,7 +21294,7 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(v_string_length))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21322,7 +21305,7 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(v_string_length))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21352,7 +21335,7 @@
(((uint64_t)(
(6291456 | ((uint32_t)((v_backslash & 127))))))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(2)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
goto label__string_loop_outer__continue;
} else if (v_backslash != 0) {
@@ -21365,7 +21348,8 @@
((uint32_t)(wuffs_json__lut_quirky_backslashes[(
v_backslash & 7)])))))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(2)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
goto label__string_loop_outer__continue;
}
@@ -21411,7 +21395,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)((6291456 | v_uni4_value)))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(6)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
goto label__string_loop_outer__continue;
} else if (v_uni4_value >= 56320) {
@@ -21424,8 +21409,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(6356989))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3))
- << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(6))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
goto label__string_loop_outer__continue;
@@ -21481,7 +21466,8 @@
(((uint64_t)((6291456 | v_uni4_high_surrogate |
v_uni4_value)))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(12))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
goto label__string_loop_outer__continue;
@@ -21498,7 +21484,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(6356989))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(6)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
goto label__string_loop_outer__continue;
}
@@ -21562,7 +21549,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)((6291456 | (v_uni8_value & 2097151))))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(10)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
goto label__string_loop_outer__continue;
} else if (self->private_impl
@@ -21571,7 +21559,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(6356989))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(10)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
goto label__string_loop_outer__continue;
}
@@ -21619,7 +21608,7 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194432))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(v_backslash_x_length))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
goto label__string_loop_outer__continue;
@@ -21633,7 +21622,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(v_string_length))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21647,7 +21637,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(6356989))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(1))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
(iop_a_src += 1, wuffs_base__make_empty_struct());
@@ -21674,7 +21665,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)((v_string_length + 2)))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21689,7 +21681,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(v_string_length))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21703,7 +21696,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(6356989))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(1))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
(iop_a_src += 1, wuffs_base__make_empty_struct());
@@ -21734,7 +21728,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)((v_string_length + 3)))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21750,7 +21745,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(v_string_length))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21764,7 +21760,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(6356989))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(1))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
(iop_a_src += 1, wuffs_base__make_empty_struct());
@@ -21795,7 +21792,8 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1))
+ << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)((v_string_length + 4)))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21810,7 +21808,7 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194337))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(v_string_length))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_string_length = 0;
@@ -21824,7 +21822,7 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)((6291456 | ((uint32_t)((v_char & 127))))))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
(iop_a_src += 1, wuffs_base__make_empty_struct());
goto label__string_loop_outer__continue;
@@ -21837,7 +21835,7 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(6356989))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(3)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
(iop_a_src += 1, wuffs_base__make_empty_struct());
goto label__string_loop_outer__continue;
@@ -21869,7 +21867,6 @@
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(4194323))
<< WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(2)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
(((uint64_t)(1)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
goto label__2__break;
}
@@ -22566,7 +22563,6 @@
uint8_t v_c = 0;
uint16_t v_c2 = 0;
- uint32_t v_link_prev = 0;
uint32_t v_length = 0;
wuffs_base__token* iop_a_dst = NULL;
@@ -22594,9 +22590,6 @@
}
uint32_t coro_susp_point = self->private_impl.p_decode_comment[0];
- if (coro_susp_point) {
- v_link_prev = self->private_data.s_decode_comment[0].v_link_prev;
- }
switch (coro_susp_point) {
WUFFS_BASE__COROUTINE_SUSPENSION_POINT_0;
@@ -22633,10 +22626,8 @@
if (v_length > 0) {
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(2)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)((1 | v_link_prev)))
- << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(v_length)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
- v_link_prev = 2;
}
if (a_src && a_src->meta.closed) {
status = wuffs_base__make_status(wuffs_json__error__bad_input);
@@ -22653,7 +22644,6 @@
(iop_a_src += 2, wuffs_base__make_empty_struct());
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(2)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(v_link_prev)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
(((uint64_t)((v_length + 2)))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
status = wuffs_base__make_status(NULL);
@@ -22663,12 +22653,10 @@
if (v_length >= 65533) {
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(2)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)((1 | v_link_prev)))
- << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)((v_length + 1)))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_length = 0;
- v_link_prev = 2;
goto label__comment_block__continue;
}
v_length += 1;
@@ -22691,10 +22679,8 @@
if (v_length > 0) {
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(1)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)((1 | v_link_prev)))
- << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)(v_length)) << WUFFS_BASE__TOKEN__LENGTH__SHIFT));
- v_link_prev = 2;
}
if (a_src && a_src->meta.closed) {
status = wuffs_base__make_status(wuffs_json__error__bad_input);
@@ -22711,7 +22697,6 @@
(iop_a_src += 1, wuffs_base__make_empty_struct());
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(1)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)(v_link_prev)) << WUFFS_BASE__TOKEN__LINK__SHIFT) |
(((uint64_t)((v_length + 1)))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
status = wuffs_base__make_status(NULL);
@@ -22721,12 +22706,10 @@
if (v_length >= 65533) {
*iop_a_dst++ = wuffs_base__make_token(
(((uint64_t)(1)) << WUFFS_BASE__TOKEN__VALUE_MINOR__SHIFT) |
- (((uint64_t)((1 | v_link_prev)))
- << WUFFS_BASE__TOKEN__LINK__SHIFT) |
+ (((uint64_t)(1)) << WUFFS_BASE__TOKEN__CONTINUED__SHIFT) |
(((uint64_t)((v_length + 1)))
<< WUFFS_BASE__TOKEN__LENGTH__SHIFT));
v_length = 0;
- v_link_prev = 2;
goto label__comment_line__continue;
}
v_length += 1;
@@ -22745,7 +22728,6 @@
suspend:
self->private_impl.p_decode_comment[0] =
wuffs_base__status__is_suspension(&status) ? coro_susp_point : 0;
- self->private_data.s_decode_comment[0].v_link_prev = v_link_prev;
goto exit;
exit:
diff --git a/script/print-json-token-debug-format.c b/script/print-json-token-debug-format.c
index 89877b9..e8a81bc 100644
--- a/script/print-json-token-debug-format.c
+++ b/script/print-json-token-debug-format.c
@@ -24,16 +24,15 @@
// It prints 16 bytes (128 bits) per token, containing big-endian numbers:
//
// +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
-// | | | | | | VALUE_EXTENSION |
-// | POS | LEN | LP| LN|EXT|VALUE_MAJOR| VALUE_MINOR |
-// | | | | | | 0 |VBC| VBD |
+// | | | | | VALUE_EXTENSION |
+// | POS | LEN | CON |EXT|VALUE_MAJOR| VALUE_MINOR |
+// | | | | | 0 |VBC| VBD |
// +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
//
// - POS (4 bytes) is the position: the sum of all previous tokens' lengths,
// including elided tokens.
// - LEN (2 bytes) is the length.
-// - LP (1 bytes) is the link_prev bit.
-// - LN (1 bytes) is the link_next bit
+// - CON (2 bytes) is the continued bit
// - EXT (1 bytes) is 1 for extended and 0 for simple tokens.
//
// Extended tokens have a VALUE_EXTENSION (7 bytes).
@@ -54,8 +53,8 @@
// If the input or output is larger than the program's buffers (64 MiB and
// 131072 tokens by default), there may be multiple valid tokenizations of any
// given input. For example, if a source string "abcde" straddles an I/O
-// boundary, it may be tokenized as single (no-link) 5-length string or as a
-// 3-length link_next'ed string followed by a 2-length link_prev'ed string.
+// boundary, it may be tokenized as single (not continued) 5-length string or
+// as a 3-length continued string followed by a 2-length string.
//
// A Wuffs token stream, in general, can support inputs more than 0xFFFF_FFFF
// bytes long, but this program can not, as it tracks the tokens' cumulative
@@ -202,7 +201,7 @@
return NULL;
}
-const char* g_vbc_names[8] = {
+const char* g_vbc_names[16] = {
"0:Filler..........", //
"1:Structure.......", //
"2:String..........", //
@@ -211,6 +210,14 @@
"5:Number..........", //
"6:Reserved........", //
"7:Reserved........", //
+ "8:Reserved........", //
+ "9:Reserved........", //
+ "A:Reserved........", //
+ "B:Reserved........", //
+ "C:Reserved........", //
+ "D:Reserved........", //
+ "E:Reserved........", //
+ "F:Reserved........", //
};
const int g_base38_decode[38] = {
@@ -277,16 +284,15 @@
uint16_t len = wuffs_base__token__length(t);
if (g_flags.all_tokens || (wuffs_base__token__value(t) != 0)) {
- uint8_t lp = wuffs_base__token__link_prev(t) ? 1 : 0;
- uint8_t ln = wuffs_base__token__link_next(t) ? 1 : 0;
+ uint16_t con = wuffs_base__token__continued(t) ? 1 : 0;
int32_t vmajor = wuffs_base__token__value_major(t);
uint32_t vminor = wuffs_base__token__value_minor(t);
uint8_t vbc = wuffs_base__token__value_base_category(t);
uint32_t vbd = wuffs_base__token__value_base_detail(t);
if (g_flags.human_readable) {
- printf("pos=0x%08" PRIX32 " len=0x%04" PRIX16 " link=0b%d%d ",
- (uint32_t)(pos), len, (int)(lp), (int)(ln));
+ printf("pos=0x%08" PRIX32 " len=0x%04" PRIX16 " con=%" PRId16 " ",
+ (uint32_t)(pos), len, con);
if (vmajor > 0) {
uint32_t m = vmajor;
@@ -302,7 +308,8 @@
vmajor, g_base38_decode[m0], g_base38_decode[m1],
g_base38_decode[m2], g_base38_decode[m3], vminor);
} else if (vmajor == 0) {
- printf("vbc=%s. vbd=0x%06" PRIX32 "\n", g_vbc_names[vbc & 7], vbd);
+ printf("vbc=%s. vbd=0x%06" PRIX32 "\n", g_vbc_names[vbc & 15],
+ vbd);
} else {
printf("extended... vextension=0x%012" PRIX64 "\n",
wuffs_base__token__value_extension(t));
@@ -312,8 +319,7 @@
uint8_t buf[16];
wuffs_base__store_u32be__no_bounds_check(&buf[0x0], (uint32_t)(pos));
wuffs_base__store_u16be__no_bounds_check(&buf[0x4], len);
- wuffs_base__store_u8__no_bounds_check(&buf[0x0006], lp);
- wuffs_base__store_u8__no_bounds_check(&buf[0x0007], ln);
+ wuffs_base__store_u16be__no_bounds_check(&buf[0x6], con);
if (vmajor > 0) {
wuffs_base__store_u32be__no_bounds_check(&buf[0x8], vmajor);
wuffs_base__store_u32be__no_bounds_check(&buf[0xC], vminor);
diff --git a/std/json/decode_json.wuffs b/std/json/decode_json.wuffs
index c5169d3..44f78e0 100644
--- a/std/json/decode_json.wuffs
+++ b/std/json/decode_json.wuffs
@@ -188,7 +188,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0,
- link: 0x0,
+ continued: 0,
length: whitespace_length)
whitespace_length = 0
}
@@ -211,7 +211,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0,
- link: 0x0,
+ continued: 0,
length: 0xFFFF)
whitespace_length = 0
continue.outer
@@ -224,7 +224,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0,
- link: 0x0,
+ continued: 0,
length: whitespace_length)
whitespace_length = 0
if args.dst.available() <= 0 {
@@ -250,7 +250,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0013,
- link: 0x1,
+ continued: 1,
length: 1)
args.src.skip32_fast!(actual: 1, worst_case: 1)
@@ -269,7 +269,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: string_length)
string_length = 0
}
@@ -299,7 +299,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: string_length + 4)
string_length = 0
continue.string_loop_outer
@@ -316,7 +316,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: 0xFFFC)
string_length = 0
continue.string_loop_outer
@@ -329,7 +329,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: string_length)
string_length = 0
}
@@ -340,7 +340,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: string_length)
string_length = 0
if args.dst.available() <= 0 {
@@ -365,7 +365,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_0000 | ((backslash & 0x7F) as base.u32),
- link: 0x3,
+ continued: 1,
length: 2)
continue.string_loop_outer
@@ -375,7 +375,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_0000 | (lut_quirky_backslashes[backslash & 7] as base.u32),
- link: 0x3,
+ continued: 1,
length: 2)
continue.string_loop_outer
}
@@ -419,7 +419,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_0000 | uni4_value,
- link: 0x3,
+ continued: 1,
length: 6)
continue.string_loop_outer
@@ -440,7 +440,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_FFFD,
- link: 0x3,
+ continued: 1,
length: 6)
continue.string_loop_outer
}
@@ -491,7 +491,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_0000 | uni4_high_surrogate | uni4_value,
- link: 0x3,
+ continued: 1,
length: 12)
continue.string_loop_outer
}
@@ -505,7 +505,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_FFFD,
- link: 0x3,
+ continued: 1,
length: 6)
continue.string_loop_outer
}
@@ -563,7 +563,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_0000 | (uni8_value & 0x1F_FFFF),
- link: 0x3,
+ continued: 1,
length: 10)
continue.string_loop_outer
} else if this.quirk_enabled_replace_invalid_unicode {
@@ -571,7 +571,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_FFFD,
- link: 0x3,
+ continued: 1,
length: 10)
continue.string_loop_outer
}
@@ -618,7 +618,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0080,
- link: 0x3,
+ continued: 1,
length: backslash_x_length)
continue.string_loop_outer
// -------- END backslash-x
@@ -632,7 +632,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: string_length)
string_length = 0
if args.dst.available() <= 0 {
@@ -644,7 +644,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_FFFD,
- link: 0x3,
+ continued: 1,
length: 1)
args.src.skip32_fast!(actual: 1, worst_case: 1)
continue.string_loop_outer
@@ -665,7 +665,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: string_length + 2)
string_length = 0
continue.string_loop_outer
@@ -680,7 +680,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: string_length)
string_length = 0
if args.dst.available() <= 0 {
@@ -692,7 +692,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_FFFD,
- link: 0x3,
+ continued: 1,
length: 1)
args.src.skip32_fast!(actual: 1, worst_case: 1)
continue.string_loop_outer
@@ -717,7 +717,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: string_length + 3)
string_length = 0
continue.string_loop_outer
@@ -733,7 +733,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: string_length)
string_length = 0
if args.dst.available() <= 0 {
@@ -745,7 +745,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_FFFD,
- link: 0x3,
+ continued: 1,
length: 1)
args.src.skip32_fast!(actual: 1, worst_case: 1)
continue.string_loop_outer
@@ -769,7 +769,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: string_length + 4)
string_length = 0
continue.string_loop_outer
@@ -784,7 +784,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0021,
- link: 0x3,
+ continued: 1,
length: string_length)
string_length = 0
if args.dst.available() <= 0 {
@@ -796,7 +796,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_0000 | ((char & 0x7F) as base.u32),
- link: 0x3,
+ continued: 1,
length: 1)
args.src.skip32_fast!(actual: 1, worst_case: 1)
continue.string_loop_outer
@@ -807,7 +807,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x60_FFFD,
- link: 0x3,
+ continued: 1,
length: 1)
args.src.skip32_fast!(actual: 1, worst_case: 1)
continue.string_loop_outer
@@ -833,7 +833,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x40_0013,
- link: 0x2,
+ continued: 0,
length: 1)
break
} endwhile
@@ -854,7 +854,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0,
- link: 0x0,
+ continued: 0,
length: 1)
// What's valid after a comma depends on whether or not we're in an
// array or an object.
@@ -879,7 +879,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0,
- link: 0x0,
+ continued: 0,
length: 1)
expect = 0x1EB2 // 0x1EB2 is EXPECT_VALUE.
continue.outer
@@ -900,7 +900,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: vminor,
- link: 0x0,
+ continued: 0,
length: number_length)
break
}
@@ -955,7 +955,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: vminor,
- link: 0x0,
+ continued: 0,
length: 1)
expect = 0x1042 // 0x1042 is (EXPECT_CLOSE_CURLY_BRACE | EXPECT_STRING).
expect_after_value = 0x1044 // 0x1044 is (EXPECT_CURLY_CLOSE_BRACE | EXPECT_COMMA).
@@ -967,7 +967,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x20_1042,
- link: 0x0,
+ continued: 0,
length: 1)
break.outer
}
@@ -978,7 +978,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x20_2042,
- link: 0x0,
+ continued: 0,
length: 1)
// 0x1104 is (EXPECT_SQUARE_CLOSE_BRACKET | EXPECT_COMMA).
expect = 0x1104
@@ -987,7 +987,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x20_4042,
- link: 0x0,
+ continued: 0,
length: 1)
// 0x1044 is (EXPECT_CURLY_CLOSE_BRACE | EXPECT_COMMA).
expect = 0x1044
@@ -1016,7 +1016,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: vminor,
- link: 0x0,
+ continued: 0,
length: 1)
expect = 0x1FB2 // 0x1FB2 is (EXPECT_CLOSE_SQUARE_BRACKET | EXPECT_VALUE).
expect_after_value = 0x1104 // 0x1104 is (EXPECT_CLOSE_SQUARE_BRACKET | EXPECT_COMMA).
@@ -1028,7 +1028,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x20_1022,
- link: 0x0,
+ continued: 0,
length: 1)
break.outer
}
@@ -1039,7 +1039,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x20_2022,
- link: 0x0,
+ continued: 0,
length: 1)
// 0x1104 is (EXPECT_CLOSE_SQUARE_BRACKET | EXPECT_COMMA).
expect = 0x1104
@@ -1048,7 +1048,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x20_4022,
- link: 0x0,
+ continued: 0,
length: 1)
// 0x1044 is (EXPECT_CLOSE_CURLY_BRACE | EXPECT_COMMA).
expect = 0x1044
@@ -1062,7 +1062,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x80_0004,
- link: 0x0,
+ continued: 0,
length: 5)
if args.src.available() < 5 {
return "#internal error: inconsistent I/O"
@@ -1080,7 +1080,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x80_0008,
- link: 0x0,
+ continued: 0,
length: 4)
if args.src.available() < 4 {
return "#internal error: inconsistent I/O"
@@ -1098,7 +1098,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x80_0002,
- link: 0x0,
+ continued: 0,
length: 4)
if args.src.available() < 4 {
return "#internal error: inconsistent I/O"
@@ -1339,7 +1339,7 @@
this.allow_leading_ars = false
args.src.skip32_fast!(actual: 1, worst_case: 1)
args.dst.write_simple_token_fast!(
- value_major: 0, value_minor: 0, link: 0x0, length: 1)
+ value_major: 0, value_minor: 0, continued: 0, length: 1)
continue
} else if (c == 0xEF) and this.allow_leading_ubom {
if args.src.available() < 3 {
@@ -1354,7 +1354,7 @@
this.allow_leading_ubom = false
args.src.skip32_fast!(actual: 3, worst_case: 3)
args.dst.write_simple_token_fast!(
- value_major: 0, value_minor: 0, link: 0x0, length: 3)
+ value_major: 0, value_minor: 0, continued: 0, length: 3)
continue
}
}
@@ -1363,10 +1363,9 @@
}
pri func decoder.decode_comment?(dst: base.token_writer, src: base.io_reader) {
- var c : base.u8
- var c2 : base.u16
- var link_prev : base.u32[..= 0x2]
- var length : base.u32[..= 0xFFFD]
+ var c : base.u8
+ var c2 : base.u16
+ var length : base.u32[..= 0xFFFD]
while (args.dst.available() <= 0) or (args.src.available() <= 1),
post args.dst.available() > 0,
@@ -1402,9 +1401,8 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x2,
- link: 0x1 | link_prev,
+ continued: 1,
length: length)
- link_prev = 0x2
}
if args.src.is_closed() {
return "#bad input"
@@ -1420,7 +1418,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x2,
- link: link_prev,
+ continued: 0,
length: length + 2)
return ok
}
@@ -1430,10 +1428,9 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x2,
- link: 0x1 | link_prev,
+ continued: 1,
length: length + 1)
length = 0
- link_prev = 0x2
continue.comment_block
}
length += 1
@@ -1459,9 +1456,8 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x1,
- link: 0x1 | link_prev,
+ continued: 1,
length: length)
- link_prev = 0x2
}
if args.src.is_closed() {
return "#bad input"
@@ -1477,7 +1473,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x1,
- link: link_prev,
+ continued: 0,
length: length + 1)
return ok
}
@@ -1487,10 +1483,9 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0x1,
- link: 0x1 | link_prev,
+ continued: 1,
length: length + 1)
length = 0
- link_prev = 0x2
continue.comment_line
}
length += 1
@@ -1527,7 +1522,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0xA0_0020,
- link: 0x0,
+ continued: 0,
length: 8)
args.src.skip32_fast!(actual: 8, worst_case: 8)
return ok
@@ -1539,7 +1534,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0xA0_0020,
- link: 0x0,
+ continued: 0,
length: 3)
args.src.skip32_fast!(actual: 3, worst_case: 3)
return ok
@@ -1548,7 +1543,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0xA0_0080,
- link: 0x0,
+ continued: 0,
length: 3)
args.src.skip32_fast!(actual: 3, worst_case: 3)
return ok
@@ -1575,7 +1570,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0xA0_0000 | ((0x20 as base.u32) >> neg),
- link: 0x0,
+ continued: 0,
length: 9)
args.src.skip32_fast!(actual: 9, worst_case: 9)
return ok
@@ -1587,7 +1582,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0xA0_0000 | ((0x20 as base.u32) >> neg),
- link: 0x0,
+ continued: 0,
length: 4)
args.src.skip32_fast!(actual: 4, worst_case: 4)
return ok
@@ -1596,7 +1591,7 @@
args.dst.write_simple_token_fast!(
value_major: 0,
value_minor: 0xA0_0000 | ((0x80 as base.u32) >> neg),
- link: 0x0,
+ continued: 0,
length: 4)
args.src.skip32_fast!(actual: 4, worst_case: 4)
return ok
@@ -1623,7 +1618,7 @@
if args.src.available() <= 0 {
if whitespace_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0, value_minor: 0, link: 0x0, length: whitespace_length)
+ value_major: 0, value_minor: 0, continued: 0, length: whitespace_length)
whitespace_length = 0
}
if args.src.is_closed() {
@@ -1638,7 +1633,7 @@
if lut_classes[c] <> 0x00 { // 0x00 is CLASS_WHITESPACE.
if whitespace_length > 0 {
args.dst.write_simple_token_fast!(
- value_major: 0, value_minor: 0, link: 0x0, length: whitespace_length)
+ value_major: 0, value_minor: 0, continued: 0, length: whitespace_length)
whitespace_length = 0
}
return "#bad input"
@@ -1647,7 +1642,7 @@
args.src.skip32_fast!(actual: 1, worst_case: 1)
if (whitespace_length >= 0xFFFE) or (c == '\n') {
args.dst.write_simple_token_fast!(
- value_major: 0, value_minor: 0, link: 0x0, length: whitespace_length + 1)
+ value_major: 0, value_minor: 0, continued: 0, length: whitespace_length + 1)
whitespace_length = 0
if c == '\n' {
break.outer
diff --git a/test/c/testlib/testlib.c b/test/c/testlib/testlib.c
index 8b82fb9..657e44a 100644
--- a/test/c/testlib/testlib.c
+++ b/test/c/testlib/testlib.c
@@ -1136,8 +1136,7 @@
uint16_t len = wuffs_base__token__length(t);
if (wuffs_base__token__value(t) != 0) {
- uint8_t lp = wuffs_base__token__link_prev(t) ? 1 : 0;
- uint8_t ln = wuffs_base__token__link_next(t) ? 1 : 0;
+ uint16_t con = wuffs_base__token__continued(t) ? 1 : 0;
int32_t vmajor = wuffs_base__token__value_major(t);
if ((have.data.len - have.meta.wi) < 16) {
@@ -1149,8 +1148,7 @@
wuffs_base__store_u32be__no_bounds_check(ptr + 0x0, (uint32_t)(pos));
wuffs_base__store_u16be__no_bounds_check(ptr + 0x4, len);
- wuffs_base__store_u8__no_bounds_check(ptr + 0x0006, lp);
- wuffs_base__store_u8__no_bounds_check(ptr + 0x0007, ln);
+ wuffs_base__store_u16be__no_bounds_check(ptr + 0x6, con);
if (vmajor > 0) {
wuffs_base__store_u32be__no_bounds_check(ptr + 0x8, vmajor);
uint32_t vminor = wuffs_base__token__value_minor(t);
diff --git a/test/data/australian-abc-local-stations.tokens b/test/data/australian-abc-local-stations.tokens
index 4274df8..1750ef5 100644
--- a/test/data/australian-abc-local-stations.tokens
+++ b/test/data/australian-abc-local-stations.tokens
Binary files differ
diff --git a/test/data/json-quirks.tokens b/test/data/json-quirks.tokens
index d8feab9..d2518f2 100644
--- a/test/data/json-quirks.tokens
+++ b/test/data/json-quirks.tokens
Binary files differ
diff --git a/test/data/json-things.unformatted.tokens b/test/data/json-things.unformatted.tokens
index 8fa0137..7bab270 100644
--- a/test/data/json-things.unformatted.tokens
+++ b/test/data/json-things.unformatted.tokens
Binary files differ