Rename `x T` to `x: T` for fields and func args
diff --git a/cmd/wuffs/gen.go b/cmd/wuffs/gen.go
index 10f9822..a23d4f2 100644
--- a/cmd/wuffs/gen.go
+++ b/cmd/wuffs/gen.go
@@ -284,7 +284,7 @@
}
// TODO: what happens if the XType is from another package?
// Similarly for the out-param.
- fmt.Fprintf(out, "%s %s", field.Name().Str(&h.tm), field.XType().Str(&h.tm))
+ fmt.Fprintf(out, "%s: %s", field.Name().Str(&h.tm), field.XType().Str(&h.tm))
}
fmt.Fprintf(out, ") ")
if o := n.Out(); o != nil {
diff --git a/doc/changelog.md b/doc/changelog.md
index 2457201..a191d79 100644
--- a/doc/changelog.md
+++ b/doc/changelog.md
@@ -38,6 +38,7 @@
- Renamed `$(etc)` to `[etc]`.
- Renamed `[i..j]` to `[i ..= j]`, consistent with Rust syntax.
- Renamed `[i:j]` to `[i .. j]`, consistent with Rust syntax.
+- Renamed `x T` to `x: T`, consistent with Rust syntax.
- Renamed `[N] T` and `[] T` types to `array[N] T` and `slice T`.
- Renamed `while:label` to `while.label`.
- Renamed `u32`, `buf1`, etc to `base.u32`, `base.io_buffer`, etc.
diff --git a/lang/ast/ast.go b/lang/ast/ast.go
index 9bcc687..1b004bf 100644
--- a/lang/ast/ast.go
+++ b/lang/ast/ast.go
@@ -453,7 +453,7 @@
}
}
-// Field is a "name type" struct field:
+// Field is a "name : type" struct field:
// - FlagsPrivateData is the initializer need not explicitly memset to zero.
// - ID2: name
// - LHS: <TypeExpr>
diff --git a/lang/builtin/builtin.go b/lang/builtin/builtin.go
index d32d686..e3c4d62 100644
--- a/lang/builtin/builtin.go
+++ b/lang/builtin/builtin.go
@@ -88,63 +88,65 @@
}
var Funcs = []string{
- "u8.high_bits(n u32[..= 8]) u8",
- "u8.low_bits(n u32[..= 8]) u8",
- "u8.max(a u8) u8",
- "u8.min(a u8) u8",
+ "u8.high_bits(n: u32[..= 8]) u8",
+ "u8.low_bits(n: u32[..= 8]) u8",
+ "u8.max(a: u8) u8",
+ "u8.min(a: u8) u8",
- "u16.high_bits(n u32[..= 16]) u16",
- "u16.low_bits(n u32[..= 16]) u16",
- "u16.max(a u16) u16",
- "u16.min(a u16) u16",
+ "u16.high_bits(n: u32[..= 16]) u16",
+ "u16.low_bits(n: u32[..= 16]) u16",
+ "u16.max(a: u16) u16",
+ "u16.min(a: u16) u16",
- "u32.high_bits(n u32[..= 32]) u32",
- "u32.low_bits(n u32[..= 32]) u32",
- "u32.max(a u32) u32",
- "u32.min(a u32) u32",
+ "u32.high_bits(n: u32[..= 32]) u32",
+ "u32.low_bits(n: u32[..= 32]) u32",
+ "u32.max(a: u32) u32",
+ "u32.min(a: u32) u32",
- "u64.high_bits(n u32[..= 64]) u64",
- "u64.low_bits(n u32[..= 64]) u64",
- "u64.max(a u64) u64",
- "u64.min(a u64) u64",
+ "u64.high_bits(n: u32[..= 64]) u64",
+ "u64.low_bits(n: u32[..= 64]) u64",
+ "u64.max(a: u64) u64",
+ "u64.min(a: u64) u64",
// ---- utility
"utility.empty_io_reader() io_reader",
"utility.empty_io_writer() io_writer",
"utility.empty_slice_u8() slice u8",
- "utility.make_range_ii_u32(min_incl u32, max_incl u32) range_ii_u32",
- "utility.make_range_ie_u32(min_incl u32, max_excl u32) range_ie_u32",
- "utility.make_range_ii_u64(min_incl u64, max_incl u64) range_ii_u64",
- "utility.make_range_ie_u64(min_incl u64, max_excl u64) range_ie_u64",
- "utility.make_rect_ii_u32(min_incl_x u32, min_incl_y u32, max_incl_x u32, max_incl_y u32) rect_ii_u32",
- "utility.make_rect_ie_u32(min_incl_x u32, min_incl_y u32, max_excl_x u32, max_excl_y u32) rect_ie_u32",
+ "utility.make_range_ii_u32(min_incl: u32, max_incl: u32) range_ii_u32",
+ "utility.make_range_ie_u32(min_incl: u32, max_excl: u32) range_ie_u32",
+ "utility.make_range_ii_u64(min_incl: u64, max_incl: u64) range_ii_u64",
+ "utility.make_range_ie_u64(min_incl: u64, max_excl: u64) range_ie_u64",
+ "utility.make_rect_ii_u32(" +
+ "min_incl_x: u32, min_incl_y: u32, max_incl_x: u32, max_incl_y: u32) rect_ii_u32",
+ "utility.make_rect_ie_u32(" +
+ "min_incl_x: u32, min_incl_y: u32, max_excl_x: u32, max_excl_y: u32) rect_ie_u32",
// ---- ranges
"range_ie_u32.reset!()",
"range_ie_u32.get_min_incl() u32",
"range_ie_u32.get_max_excl() u32",
- "range_ie_u32.intersect(r range_ie_u32) range_ie_u32",
- "range_ie_u32.unite(r range_ie_u32) range_ie_u32",
+ "range_ie_u32.intersect(r: range_ie_u32) range_ie_u32",
+ "range_ie_u32.unite(r: range_ie_u32) range_ie_u32",
"range_ii_u32.reset!()",
"range_ii_u32.get_min_incl() u32",
"range_ii_u32.get_max_incl() u32",
- "range_ii_u32.intersect(r range_ii_u32) range_ii_u32",
- "range_ii_u32.unite(r range_ii_u32) range_ii_u32",
+ "range_ii_u32.intersect(r: range_ii_u32) range_ii_u32",
+ "range_ii_u32.unite(r: range_ii_u32) range_ii_u32",
"range_ie_u64.reset!()",
"range_ie_u64.get_min_incl() u64",
"range_ie_u64.get_max_excl() u64",
- "range_ie_u64.intersect(r range_ie_u64) range_ie_u64",
- "range_ie_u64.unite(r range_ie_u64) range_ie_u64",
+ "range_ie_u64.intersect(r: range_ie_u64) range_ie_u64",
+ "range_ie_u64.unite(r: range_ie_u64) range_ie_u64",
"range_ii_u64.reset!()",
"range_ii_u64.get_min_incl() u64",
"range_ii_u64.get_max_incl() u64",
- "range_ii_u64.intersect(r range_ii_u64) range_ii_u64",
- "range_ii_u64.unite(r range_ii_u64) range_ii_u64",
+ "range_ii_u64.intersect(r: range_ii_u64) range_ii_u64",
+ "range_ii_u64.unite(r: range_ii_u64) range_ii_u64",
// ---- io_reader
@@ -217,77 +219,77 @@
"io_reader.peek_u64le() u64",
"io_reader.available() u64",
- "io_reader.count_since(mark u64) u64",
+ "io_reader.count_since(mark: u64) u64",
"io_reader.mark() u64",
"io_reader.position() u64",
- "io_reader.since(mark u64) slice u8",
- "io_reader.take!(n u64) slice u8",
+ "io_reader.since(mark: u64) slice u8",
+ "io_reader.take!(n: u64) slice u8",
- "io_reader.skip?(n u32)",
+ "io_reader.skip?(n: u32)",
// TODO: this should have explicit pre-conditions "actual <= worst_case"
// and "worst_case <= available()". As an implementation restriction, we
// also require that worst_case has a constant value. For now, that's all
// implicitly checked (i.e. hard coded).
- "io_reader.skip_fast!(actual u32, worst_case u32)",
+ "io_reader.skip_fast!(actual: u32, worst_case: u32)",
// ---- io_writer
- "io_writer.write_u8?(a u8)",
- "io_writer.write_u16be?(a u16)",
- "io_writer.write_u16le?(a u16)",
- "io_writer.write_u24be?(a u32[..= 0xFFFFFF])",
- "io_writer.write_u24le?(a u32[..= 0xFFFFFF])",
- "io_writer.write_u32be?(a u32)",
- "io_writer.write_u32le?(a u32)",
- "io_writer.write_u40be?(a u64[..= 0xFFFFFFFFFF])",
- "io_writer.write_u40le?(a u64[..= 0xFFFFFFFFFF])",
- "io_writer.write_u48be?(a u64[..= 0xFFFFFFFFFFFF])",
- "io_writer.write_u48le?(a u64[..= 0xFFFFFFFFFFFF])",
- "io_writer.write_u56be?(a u64[..= 0xFFFFFFFFFFFFFF])",
- "io_writer.write_u56le?(a u64[..= 0xFFFFFFFFFFFFFF])",
- "io_writer.write_u64be?(a u64)",
- "io_writer.write_u64le?(a u64)",
+ "io_writer.write_u8?(a: u8)",
+ "io_writer.write_u16be?(a: u16)",
+ "io_writer.write_u16le?(a: u16)",
+ "io_writer.write_u24be?(a: u32[..= 0xFFFFFF])",
+ "io_writer.write_u24le?(a: u32[..= 0xFFFFFF])",
+ "io_writer.write_u32be?(a: u32)",
+ "io_writer.write_u32le?(a: u32)",
+ "io_writer.write_u40be?(a: u64[..= 0xFFFFFFFFFF])",
+ "io_writer.write_u40le?(a: u64[..= 0xFFFFFFFFFF])",
+ "io_writer.write_u48be?(a: u64[..= 0xFFFFFFFFFFFF])",
+ "io_writer.write_u48le?(a: u64[..= 0xFFFFFFFFFFFF])",
+ "io_writer.write_u56be?(a: u64[..= 0xFFFFFFFFFFFFFF])",
+ "io_writer.write_u56le?(a: u64[..= 0xFFFFFFFFFFFFFF])",
+ "io_writer.write_u64be?(a: u64)",
+ "io_writer.write_u64le?(a: u64)",
// TODO: these should have an explicit pre-condition "available() >= N".
// For now, that's implicitly checked (i.e. hard coded).
//
// The io_writer has write_fast_etc methods, not poke_etc and skip_fast,
// because skip_fast could leave uninitialized bytes in the io_buffer.
- "io_writer.write_fast_u8!(a u8)",
- "io_writer.write_fast_u16be!(a u16)",
- "io_writer.write_fast_u16le!(a u16)",
- "io_writer.write_fast_u24be!(a u32[..= 0xFFFFFF])",
- "io_writer.write_fast_u24le!(a u32[..= 0xFFFFFF])",
- "io_writer.write_fast_u32be!(a u32)",
- "io_writer.write_fast_u32le!(a u32)",
- "io_writer.write_fast_u40be!(a u64[..= 0xFFFFFFFFFF])",
- "io_writer.write_fast_u40le!(a u64[..= 0xFFFFFFFFFF])",
- "io_writer.write_fast_u48be!(a u64[..= 0xFFFFFFFFFFFF])",
- "io_writer.write_fast_u48le!(a u64[..= 0xFFFFFFFFFFFF])",
- "io_writer.write_fast_u56be!(a u64[..= 0xFFFFFFFFFFFFFF])",
- "io_writer.write_fast_u56le!(a u64[..= 0xFFFFFFFFFFFFFF])",
- "io_writer.write_fast_u64be!(a u64)",
- "io_writer.write_fast_u64le!(a u64)",
+ "io_writer.write_fast_u8!(a: u8)",
+ "io_writer.write_fast_u16be!(a: u16)",
+ "io_writer.write_fast_u16le!(a: u16)",
+ "io_writer.write_fast_u24be!(a: u32[..= 0xFFFFFF])",
+ "io_writer.write_fast_u24le!(a: u32[..= 0xFFFFFF])",
+ "io_writer.write_fast_u32be!(a: u32)",
+ "io_writer.write_fast_u32le!(a: u32)",
+ "io_writer.write_fast_u40be!(a: u64[..= 0xFFFFFFFFFF])",
+ "io_writer.write_fast_u40le!(a: u64[..= 0xFFFFFFFFFF])",
+ "io_writer.write_fast_u48be!(a: u64[..= 0xFFFFFFFFFFFF])",
+ "io_writer.write_fast_u48le!(a: u64[..= 0xFFFFFFFFFFFF])",
+ "io_writer.write_fast_u56be!(a: u64[..= 0xFFFFFFFFFFFFFF])",
+ "io_writer.write_fast_u56le!(a: u64[..= 0xFFFFFFFFFFFFFF])",
+ "io_writer.write_fast_u64be!(a: u64)",
+ "io_writer.write_fast_u64le!(a: u64)",
"io_writer.available() u64",
- "io_writer.count_since(mark u64) u64",
+ "io_writer.count_since(mark: u64) u64",
"io_writer.history_available() u64",
"io_writer.mark() u64",
"io_writer.position() u64",
- "io_writer.since(mark u64) slice u8",
+ "io_writer.since(mark: u64) slice u8",
- "io_writer.copy_from_slice!(s slice u8) u64",
- "io_writer.copy_n_from_history!(n u32, distance u32) u32",
- "io_writer.copy_n_from_reader!(n u32, r io_reader) u32",
- "io_writer.copy_n_from_slice!(n u32, s slice u8) u32",
+ "io_writer.copy_from_slice!(s: slice u8) u64",
+ "io_writer.copy_n_from_history!(n: u32, distance: u32) u32",
+ "io_writer.copy_n_from_reader!(n: u32, r: io_reader) u32",
+ "io_writer.copy_n_from_slice!(n: u32, s: slice u8) u32",
// TODO: this should have explicit pre-conditions:
// - n <= this.available()
// - distance > 0
// - distance <= this.since_mark().length()
// For now, that's all implicitly checked (i.e. hard coded).
- "io_writer.copy_n_from_history_fast!(n u32, distance u32) u32",
+ "io_writer.copy_n_from_history_fast!(n: u32, distance: u32) u32",
// ---- status
@@ -306,24 +308,26 @@
"frame_config.index() u64",
"frame_config.io_position() u64",
- "frame_config.update!(bounds rect_ie_u32, duration u64[..= 0x7FFFFFFFFFFFFFFF], " +
- "index u64, io_position u64, blend u8, disposal u8, background_color u32)",
+ "frame_config.update!(bounds: rect_ie_u32, duration: u64[..= 0x7FFFFFFFFFFFFFFF], " +
+ "index: u64, io_position: u64, blend: u8, disposal: u8, background_color: u32)",
// ---- image_config
- "image_config.set!(pixfmt u32, pixsub u32, width u32, height u32, " +
- "first_frame_io_position u64, first_frame_is_opaque bool)",
+ "image_config.set!(pixfmt: u32, pixsub: u32, width: u32, height: u32, " +
+ "first_frame_io_position: u64, first_frame_is_opaque: bool)",
// ---- pixel_buffer
"pixel_buffer.palette() slice u8",
"pixel_buffer.pixel_format() u32",
- "pixel_buffer.plane(p u32[..= 3]) table u8",
+ "pixel_buffer.plane(p: u32[..= 3]) table u8",
// ---- pixel_swizzler
- "pixel_swizzler.prepare!(dst_pixfmt u32, dst_palette slice u8, src_pixfmt u32, src_palette slice u8) status",
- "pixel_swizzler.swizzle_interleaved!(dst slice u8, dst_palette slice u8, src slice u8) u64",
+ "pixel_swizzler.prepare!(" +
+ "dst_pixfmt: u32, dst_palette: slice u8, src_pixfmt: u32, src_palette: slice u8) status",
+ "pixel_swizzler.swizzle_interleaved!(" +
+ "dst: slice u8, dst_palette: slice u8, src: slice u8) u64",
}
// The "T1" and "T2" types here are placeholders for generic "slice T" or
@@ -339,10 +343,10 @@
)
var SliceFuncs = []string{
- "T1.copy_from_slice!(s T1) u64",
+ "T1.copy_from_slice!(s: T1) u64",
"T1.length() u64",
- "T1.prefix(up_to u64) T1",
- "T1.suffix(up_to u64) T1",
+ "T1.prefix(up_to: u64) T1",
+ "T1.suffix(up_to: u64) T1",
}
var TableFuncs = []string{
@@ -350,5 +354,5 @@
"T2.stride() u64",
"T2.width() u64",
- "T2.row(y u32) T1",
+ "T2.row(y: u32) T1",
}
diff --git a/lang/check/check_test.go b/lang/check/check_test.go
index 7e4f67c..b052361 100644
--- a/lang/check/check_test.go
+++ b/lang/check/check_test.go
@@ -60,7 +60,7 @@
const filename = "test.wuffs"
src := strings.TrimSpace(`
pri struct foo(
- i base.i32,
+ i : base.i32,
)
pri func foo.bar() {
diff --git a/lang/parse/parse.go b/lang/parse/parse.go
index d7b3301..73fda31 100644
--- a/lang/parse/parse.go
+++ b/lang/parse/parse.go
@@ -364,6 +364,11 @@
if err != nil {
return nil, err
}
+ if x := p.peek1(); x != t.IDColon {
+ got := p.tm.ByID(x)
+ return nil, fmt.Errorf(`parse: expected ":", got %q at %s:%d`, got, p.filename, p.line())
+ }
+ p.src = p.src[1:]
typ, err := p.parseTypeExpr()
if err != nil {
return nil, err
diff --git a/std/adler32/common_adler32.wuffs b/std/adler32/common_adler32.wuffs
index 037f10e..c0f0733 100644
--- a/std/adler32/common_adler32.wuffs
+++ b/std/adler32/common_adler32.wuffs
@@ -14,11 +14,11 @@
// TODO: drop the '?' but still generate wuffs_adler32__hasher__initialize?
pub struct hasher?(
- state base.u32,
- started base.bool,
+ state : base.u32,
+ started : base.bool,
)
-pub func hasher.update!(x slice base.u8) base.u32 {
+pub func hasher.update!(x: slice base.u8) base.u32 {
// The Adler-32 checksum's magic 65521 and 5552 numbers are discussed in
// this package's README.md.
diff --git a/std/crc32/common_crc32.wuffs b/std/crc32/common_crc32.wuffs
index 87b2f95..2de80ca 100644
--- a/std/crc32/common_crc32.wuffs
+++ b/std/crc32/common_crc32.wuffs
@@ -14,13 +14,13 @@
// TODO: drop the '?' but still generate wuffs_crc32__ieee_hasher__initialize?
pub struct ieee_hasher?(
- state base.u32,
+ state : base.u32,
)
// TODO: should it be ? instead of ! because it's public, and might need a way
// to signal "initializer not called"? Should the return type, in the generated
// C code, be "struct{ uint32_t checksum; wuffs_crc32__status status }"?
-pub func ieee_hasher.update!(x slice base.u8) base.u32 {
+pub func ieee_hasher.update!(x: slice base.u8) base.u32 {
var s base.u32
var p slice base.u8
diff --git a/std/deflate/decode_deflate.wuffs b/std/deflate/decode_deflate.wuffs
index 8b867ac..d21e904 100644
--- a/std/deflate/decode_deflate.wuffs
+++ b/std/deflate/decode_deflate.wuffs
@@ -64,21 +64,21 @@
pub struct decoder?(
// These fields yield src's bits in Least Significant Bits order.
- bits base.u32,
- n_bits base.u32,
+ bits : base.u32,
+ n_bits : base.u32,
// history_index indexes the history array, defined below.
- history_index base.u32,
+ history_index : base.u32,
// n_huffs_bits is discussed in the huffs field comment.
- n_huffs_bits array[2] base.u32[..= 9],
+ n_huffs_bits : array[2] base.u32[..= 9],
// end_of_block is whether decode_huffman_xxx saw an end-of-block code.
//
// TODO: can decode_huffman_xxx signal this in band instead of out of band?
- end_of_block base.bool,
+ end_of_block : base.bool,
- util base.utility,
+ util : base.utility,
)(
// huffs and n_huffs_bits are the lookup tables for Huffman decodings.
//
@@ -112,7 +112,7 @@
// - bits 0 ..= 3 are the number of decoder.bits to consume.
//
// Exactly one of the eight bits [24 ..= 31] should be set.
- huffs array[2] array[huffs_table_size] base.u32,
+ huffs : array[2] array[huffs_table_size] base.u32,
// history holds up to the last 32KiB of decoded output, if the decoding
// was incomplete (e.g. due to a short read or write). RFC 1951 (DEFLATE)
@@ -125,16 +125,16 @@
//
// history[history_index & 0x7FFF] is where the next byte of decoded output
// will be written.
- history array[0x8000] base.u8, // 32 KiB.
+ history : array[0x8000] base.u8, // 32 KiB.
// code_lengths is used to pass out-of-band data to init_huff.
//
// code_lengths[args.n_codes0 + i] holds the number of bits in the i'th
// code.
- code_lengths array[320] base.u8,
+ code_lengths : array[320] base.u8,
)
-pub func decoder.add_history!(hist slice base.u8) {
+pub func decoder.add_history!(hist: slice base.u8) {
var s slice base.u8
var n_copied base.u64
var already_full base.u32[..= 0x8000]
@@ -183,7 +183,7 @@
max_incl: decoder_workbuf_len_max_incl_worst_case)
}
-pub func decoder.decode_io_writer?(dst base.io_writer, src base.io_reader, workbuf slice base.u8) {
+pub func decoder.decode_io_writer?(dst: base.io_writer, src: base.io_reader, workbuf: slice base.u8) {
var mark base.u64
var status base.status
@@ -201,7 +201,7 @@
}
}
-pri func decoder.decode_blocks?(dst base.io_writer, src base.io_reader) {
+pri func decoder.decode_blocks?(dst: base.io_writer, src: base.io_reader) {
var final base.u32
var b0 base.u32[..= 255]
var type base.u32
@@ -259,7 +259,7 @@
// decode_uncompressed decodes an uncompresed block as per the RFC section
// 3.2.4.
-pri func decoder.decode_uncompressed?(dst base.io_writer, src base.io_reader) {
+pri func decoder.decode_uncompressed?(dst: base.io_writer, src: base.io_reader) {
var length base.u32
var n_copied base.u32
@@ -329,7 +329,7 @@
}
// init_dynamic_huffman initializes this.huffs as per the RFC section 3.2.7.
-pri func decoder.init_dynamic_huffman?(src base.io_reader) {
+pri func decoder.init_dynamic_huffman?(src: base.io_reader) {
var bits base.u32
var n_bits base.u32
var b0 base.u32[..= 255]
@@ -506,7 +506,7 @@
// TODO: make named constants for 15, 19, 319, etc.
-pri func decoder.init_huff!(which base.u32[..= 1], n_codes0 base.u32[..= 288], n_codes1 base.u32[..= 320], base_symbol base.u32) base.status {
+pri func decoder.init_huff!(which: base.u32[..= 1], n_codes0: base.u32[..= 288], n_codes1: base.u32[..= 320], base_symbol: base.u32) base.status {
var counts array[16] base.u16[..= 320]
var i base.u32
var remaining base.u32
diff --git a/std/deflate/decode_huffman_fast.wuffs b/std/deflate/decode_huffman_fast.wuffs
index b1019d0..da55c38 100644
--- a/std/deflate/decode_huffman_fast.wuffs
+++ b/std/deflate/decode_huffman_fast.wuffs
@@ -14,7 +14,7 @@
// TODO: describe how the xxx_fast version differs from the xxx_slow one, the
// assumptions that xxx_fast makes, and how that makes it fast.
-pri func decoder.decode_huffman_fast!(dst base.io_writer, src base.io_reader) base.status {
+pri func decoder.decode_huffman_fast!(dst: base.io_writer, src: base.io_reader) base.status {
// When editing this function, consider making the equivalent change to the
// decode_huffman_slow function. Keep the diff between the two
// decode_huffman_*.wuffs files as small as possible, while retaining both
diff --git a/std/deflate/decode_huffman_slow.wuffs b/std/deflate/decode_huffman_slow.wuffs
index 61e689c..58472bf 100644
--- a/std/deflate/decode_huffman_slow.wuffs
+++ b/std/deflate/decode_huffman_slow.wuffs
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-pri func decoder.decode_huffman_slow?(dst base.io_writer, src base.io_reader) {
+pri func decoder.decode_huffman_slow?(dst: base.io_writer, src: base.io_reader) {
var bits base.u32
var n_bits base.u32
var table_entry base.u32
diff --git a/std/gif/decode_gif.wuffs b/std/gif/decode_gif.wuffs
index 3d6ba30..84ab916 100644
--- a/std/gif/decode_gif.wuffs
+++ b/std/gif/decode_gif.wuffs
@@ -121,8 +121,8 @@
pri const interlace_count array[5] base.u8 = [0, 1, 2, 4, 8]
pub struct decoder?(
- width base.u32,
- height base.u32,
+ width : base.u32,
+ height : base.u32,
// Call sequence states:
// - 0: initial state.
@@ -159,79 +159,79 @@
// - F is decode_frame, implicit means skip_frame
// - FC is decode_frame_config, implicit means nullptr args.dst
// - IC is decode_image_config, implicit means nullptr args.dst
- call_sequence base.u8,
+ call_sequence : base.u8,
- ignore_metadata base.bool,
- report_metadata_iccp base.bool,
- report_metadata_xmp base.bool,
- metadata_fourcc_value base.u32,
- metadata_chunk_length_value base.u64,
- metadata_io_position base.u64,
+ ignore_metadata : base.bool,
+ report_metadata_iccp : base.bool,
+ report_metadata_xmp : base.bool,
+ metadata_fourcc_value : base.u32,
+ metadata_chunk_length_value : base.u64,
+ metadata_io_position : base.u64,
- quirk_enabled_delay_num_decoded_frames base.bool,
- quirk_enabled_first_frame_local_palette_means_black_background base.bool,
- quirk_enabled_honor_background_color base.bool,
- quirk_enabled_ignore_too_much_pixel_data base.bool,
- quirk_enabled_image_bounds_are_strict base.bool,
- quirk_enabled_reject_empty_frame base.bool,
- quirk_enabled_reject_empty_palette base.bool,
+ quirk_enabled_delay_num_decoded_frames : base.bool,
+ quirk_enabled_first_frame_local_palette_means_black_background : base.bool,
+ quirk_enabled_honor_background_color : base.bool,
+ quirk_enabled_ignore_too_much_pixel_data : base.bool,
+ quirk_enabled_image_bounds_are_strict : base.bool,
+ quirk_enabled_reject_empty_frame : base.bool,
+ quirk_enabled_reject_empty_palette : base.bool,
- delayed_num_decoded_frames base.bool,
- end_of_data base.bool,
- restarted base.bool,
- previous_lzw_decode_ended_abruptly base.bool,
+ delayed_num_decoded_frames : base.bool,
+ end_of_data : base.bool,
+ restarted : base.bool,
+ previous_lzw_decode_ended_abruptly : base.bool,
- has_global_palette base.bool,
+ has_global_palette : base.bool,
// interlace indexes the interlace_start and interlace_delta arrays.
- interlace base.u8[..= 4],
+ interlace : base.u8[..= 4],
// Absent an ANIMEXTS1.0 or NETSCAPE2.0 extension, the implicit number of
// animation loops is 1.
- seen_num_loops base.bool,
- num_loops base.u32,
+ seen_num_loops : base.bool,
+ num_loops : base.u32,
- background_color_u32_argb_premul base.u32,
- black_color_u32_argb_premul base.u32,
+ background_color_u32_argb_premul : base.u32,
+ black_color_u32_argb_premul : base.u32,
- gc_has_transparent_index base.bool,
- gc_transparent_index base.u8,
- gc_disposal base.u8,
+ gc_has_transparent_index : base.bool,
+ gc_transparent_index : base.u8,
+ gc_disposal : base.u8,
// There are 7056000 flicks per centisecond.
- gc_duration base.u64[..= 0xFFFF * 7056000],
+ gc_duration : base.u64[..= 0xFFFF * 7056000],
- frame_config_io_position base.u64,
- num_decoded_frame_configs_value base.u64,
- num_decoded_frames_value base.u64,
+ frame_config_io_position : base.u64,
+ num_decoded_frame_configs_value : base.u64,
+ num_decoded_frames_value : base.u64,
- frame_rect_x0 base.u32,
- frame_rect_y0 base.u32,
- frame_rect_x1 base.u32,
- frame_rect_y1 base.u32,
+ frame_rect_x0 : base.u32,
+ frame_rect_y0 : base.u32,
+ frame_rect_x1 : base.u32,
+ frame_rect_y1 : base.u32,
// The dst_etc fields are the output cursor during copy_to_image_buffer.
- dst_x base.u32,
- dst_y base.u32,
- dirty_max_excl_y base.u32,
+ dst_x : base.u32,
+ dst_y : base.u32,
+ dirty_max_excl_y : base.u32,
// Indexes into the compressed array, defined below.
- compressed_ri base.u64,
- compressed_wi base.u64,
+ compressed_ri : base.u64,
+ compressed_wi : base.u64,
- swizzler base.pixel_swizzler,
- util base.utility,
+ swizzler : base.pixel_swizzler,
+ util : base.utility,
)(
- compressed array[4096] base.u8,
+ compressed : array[4096] base.u8,
// palettes[0] and palettes[1] are the Global and Local Color Table.
- palettes array[2] array[4 * 256] base.u8,
+ palettes : array[2] array[4 * 256] base.u8,
// dst_palette is the swizzled color table.
- dst_palette array[4 * 256] base.u8,
+ dst_palette : array[4 * 256] base.u8,
- lzw lzw.decoder,
+ lzw : lzw.decoder,
)
-pub func decoder.set_quirk_enabled!(quirk base.u32, enabled base.bool) {
+pub func decoder.set_quirk_enabled!(quirk: base.u32, enabled: base.bool) {
if this.call_sequence == 0 {
if args.quirk == quirk_delay_num_decoded_frames {
this.quirk_enabled_delay_num_decoded_frames = args.enabled
@@ -251,7 +251,7 @@
}
}
-pub func decoder.decode_image_config?(dst nptr base.image_config, src base.io_reader) {
+pub func decoder.decode_image_config?(dst: nptr base.image_config, src: base.io_reader) {
var ffio base.bool
if this.call_sequence == 0 {
@@ -296,7 +296,7 @@
this.call_sequence = 3
}
-pub func decoder.set_report_metadata!(fourcc base.u32, report base.bool) {
+pub func decoder.set_report_metadata!(fourcc: base.u32, report: base.bool) {
if args.fourcc == 0x49434350 { // "ICCP"
this.report_metadata_iccp = args.report
} else if args.fourcc == 0x584D5020 { // "XMP "
@@ -304,7 +304,7 @@
}
}
-pub func decoder.ack_metadata_chunk?(src base.io_reader) {
+pub func decoder.ack_metadata_chunk?(src: base.io_reader) {
if this.call_sequence <> 1 {
return base."#bad call sequence"
}
@@ -383,7 +383,7 @@
max_incl: decoder_workbuf_len_max_incl_worst_case)
}
-pub func decoder.restart_frame!(index base.u64, io_position base.u64) base.status {
+pub func decoder.restart_frame!(index: base.u64, io_position: base.u64) base.status {
if this.call_sequence == 0 {
return base."#bad call sequence"
}
@@ -397,7 +397,7 @@
return ok
}
-pub func decoder.decode_frame_config?(dst nptr base.frame_config, src base.io_reader) {
+pub func decoder.decode_frame_config?(dst: nptr base.frame_config, src: base.io_reader) {
var blend base.u8
var background_color base.u32
var flags base.u8
@@ -468,7 +468,7 @@
this.call_sequence = 4
}
-pri func decoder.skip_frame?(src base.io_reader) {
+pri func decoder.skip_frame?(src: base.io_reader) {
var flags base.u8
var lw base.u8
@@ -496,7 +496,7 @@
}
// TODO: honor args.opts.
-pub func decoder.decode_frame?(dst ptr base.pixel_buffer, src base.io_reader, workbuf slice base.u8, opts nptr base.decode_frame_options) {
+pub func decoder.decode_frame?(dst: ptr base.pixel_buffer, src: base.io_reader, workbuf: slice base.u8, opts: nptr base.decode_frame_options) {
this.ignore_metadata = true
if this.call_sequence <> 4 {
this.decode_frame_config?(dst: nullptr, src: args.src)
@@ -522,7 +522,7 @@
this.gc_duration = 0
}
-pri func decoder.decode_up_to_id_part1?(src base.io_reader) {
+pri func decoder.decode_up_to_id_part1?(src: base.io_reader) {
var block_type base.u8
if not this.restarted {
@@ -562,7 +562,7 @@
// decode_header reads either "GIF87a" or "GIF89a".
//
// See the spec section 17 "Header" on page 7.
-pri func decoder.decode_header?(src base.io_reader) {
+pri func decoder.decode_header?(src: base.io_reader) {
var c array[6] base.u8
var i base.u32
@@ -579,7 +579,7 @@
// decode_lsd reads the Logical Screen Descriptor.
//
// See the spec section 18 "Logical Screen Descriptor" on page 8.
-pri func decoder.decode_lsd?(src base.io_reader) {
+pri func decoder.decode_lsd?(src: base.io_reader) {
var flags base.u8
var background_color_index base.u8
var num_palette_entries base.u32[..= 256]
@@ -650,7 +650,7 @@
// - section 24 "Comment Extension" on page 17.
// - section 25 "Plain Text Extension" on page 18.
// - section 26 "Application Extension" on page 21.
-pri func decoder.decode_extension?(src base.io_reader) {
+pri func decoder.decode_extension?(src: base.io_reader) {
var label base.u8
label = args.src.read_u8?()
@@ -666,7 +666,7 @@
this.skip_blocks?(src: args.src)
}
-pri func decoder.skip_blocks?(src base.io_reader) {
+pri func decoder.skip_blocks?(src: base.io_reader) {
var block_size base.u8
while true {
@@ -699,7 +699,7 @@
]
// decode_ae reads an Application Extension.
-pri func decoder.decode_ae?(src base.io_reader) {
+pri func decoder.decode_ae?(src: base.io_reader) {
var c base.u8
var block_size base.u8
var is_animexts base.bool
@@ -812,7 +812,7 @@
}
// decode_gc reads a Graphic Control.
-pri func decoder.decode_gc?(src base.io_reader) {
+pri func decoder.decode_gc?(src: base.io_reader) {
var c base.u8
var flags base.u8
var gc_duration_centiseconds base.u16
@@ -866,7 +866,7 @@
// (part1 and part2) not out of necessity, just for the general programming
// principle that smaller functions are easier to understand.
-pri func decoder.decode_id_part0?(src base.io_reader) {
+pri func decoder.decode_id_part0?(src: base.io_reader) {
this.frame_rect_x0 = args.src.read_u16le_as_u32?()
this.frame_rect_y0 = args.src.read_u16le_as_u32?()
this.frame_rect_x1 = args.src.read_u16le_as_u32?()
@@ -887,7 +887,7 @@
}
}
-pri func decoder.decode_id_part1?(dst ptr base.pixel_buffer, src base.io_reader) {
+pri func decoder.decode_id_part1?(dst: ptr base.pixel_buffer, src: base.io_reader) {
var flags base.u8
var which_palette base.u8[..= 1]
var num_palette_entries base.u32[..= 256]
@@ -992,7 +992,7 @@
this.previous_lzw_decode_ended_abruptly = true
}
-pri func decoder.decode_id_part2?(dst ptr base.pixel_buffer, src base.io_reader, workbuf slice base.u8) {
+pri func decoder.decode_id_part2?(dst: ptr base.pixel_buffer, src: base.io_reader, workbuf: slice base.u8) {
var block_size base.u64[..= 255]
var need_block_size base.bool
var n_compressed base.u64
@@ -1092,7 +1092,7 @@
}
}
-pri func decoder.copy_to_image_buffer!(pb ptr base.pixel_buffer, src slice base.u8) base.status {
+pri func decoder.copy_to_image_buffer!(pb: ptr base.pixel_buffer, src: slice base.u8) base.status {
// TODO: don't assume an interleaved pixel format.
var dst slice base.u8
var src slice base.u8
diff --git a/std/gzip/decode_gzip.wuffs b/std/gzip/decode_gzip.wuffs
index 06669b4..9ccd619 100644
--- a/std/gzip/decode_gzip.wuffs
+++ b/std/gzip/decode_gzip.wuffs
@@ -24,15 +24,15 @@
pub const decoder_workbuf_len_max_incl_worst_case base.u64 = 1
pub struct decoder?(
- ignore_checksum base.bool,
- checksum crc32.ieee_hasher,
+ ignore_checksum : base.bool,
+ checksum : crc32.ieee_hasher,
- flate deflate.decoder,
+ flate : deflate.decoder,
- util base.utility,
+ util : base.utility,
)
-pub func decoder.set_ignore_checksum!(ic base.bool) {
+pub func decoder.set_ignore_checksum!(ic: base.bool) {
this.ignore_checksum = args.ic
}
@@ -42,7 +42,7 @@
max_incl: decoder_workbuf_len_max_incl_worst_case)
}
-pub func decoder.decode_io_writer?(dst base.io_writer, src base.io_reader, workbuf slice base.u8) {
+pub func decoder.decode_io_writer?(dst: base.io_writer, src: base.io_reader, workbuf: slice base.u8) {
var c base.u8
var flags base.u8
var xlen base.u16
diff --git a/std/lzw/decode_lzw.wuffs b/std/lzw/decode_lzw.wuffs
index 1f8bc06..96822f9 100644
--- a/std/lzw/decode_lzw.wuffs
+++ b/std/lzw/decode_lzw.wuffs
@@ -31,45 +31,45 @@
// set_literal_width. This is assigned to the literal_width field at the
// start of decode_io_writer. During that method, calling set_literal_width
// will change set_literal_width_arg but not literal_width.
- set_literal_width_arg base.u32[..= 9],
+ set_literal_width_arg : base.u32[..= 9],
// read_from state that does not change during a decode call.
- literal_width base.u32[..= 8],
- clear_code base.u32[..= 256],
- end_code base.u32[..= 257],
+ literal_width : base.u32[..= 8],
+ clear_code : base.u32[..= 256],
+ end_code : base.u32[..= 257],
// read_from state that does change during a decode call.
- save_code base.u32[..= 4096],
- prev_code base.u32[..= 4095],
- width base.u32[..= 12],
- bits base.u32,
- n_bits base.u32[..= 31],
- output_ri base.u32[..= 8191],
- output_wi base.u32[..= 8191],
+ save_code : base.u32[..= 4096],
+ prev_code : base.u32[..= 4095],
+ width : base.u32[..= 12],
+ bits : base.u32,
+ n_bits : base.u32[..= 31],
+ output_ri : base.u32[..= 8191],
+ output_wi : base.u32[..= 8191],
// read_from return value. The read_from method effectively returns a
// base.u32 to show how decode should continue after calling write_to. That
// value needs to be saved across write_to's possible suspension, so we
// might as well save it explicitly as a decoder field.
- read_from_return_value base.u32,
+ read_from_return_value : base.u32,
// read_from per-code state.
- prefixes array[4096] base.u16[..= 4095],
+ prefixes : array[4096] base.u16[..= 4095],
- util base.utility,
+ util : base.utility,
)(
// read_from per-code state.
- suffixes array[4096] array[8] base.u8,
+ suffixes : array[4096] array[8] base.u8,
// lm1s is the "length minus 1"s of the values for the implicit key-value
// table in this decoder. See std/lzw/README.md for more detail.
- lm1s array[4096] base.u16,
+ lm1s : array[4096] base.u16,
// output[output_ri:output_wi] is the buffered output, connecting read_from
// with write_to and flush.
- output array[8192 + 7] base.u8,
+ output : array[8192 + 7] base.u8,
)
-pub func decoder.set_literal_width!(lw base.u32[..= 8]) {
+pub func decoder.set_literal_width!(lw: base.u32[..= 8]) {
this.set_literal_width_arg = args.lw + 1
}
@@ -77,7 +77,7 @@
return this.util.make_range_ii_u64(min_incl: 0, max_incl: 0)
}
-pub func decoder.decode_io_writer?(dst base.io_writer, src base.io_reader, workbuf slice base.u8) {
+pub func decoder.decode_io_writer?(dst: base.io_writer, src: base.io_reader, workbuf: slice base.u8) {
var i base.u32[..= 8191]
// Initialize read_from state.
@@ -123,7 +123,7 @@
}
}
-pri func decoder.read_from!(src base.io_reader) {
+pri func decoder.read_from!(src: base.io_reader) {
var clear_code base.u32[..= 256]
var end_code base.u32[..= 257]
@@ -330,7 +330,7 @@
this.output_wi = output_wi
}
-pri func decoder.write_to?(dst base.io_writer) {
+pri func decoder.write_to?(dst: base.io_writer) {
var s slice base.u8
var n base.u64
diff --git a/std/zlib/decode_zlib.wuffs b/std/zlib/decode_zlib.wuffs
index 0e5b57b..ba7e883 100644
--- a/std/zlib/decode_zlib.wuffs
+++ b/std/zlib/decode_zlib.wuffs
@@ -27,29 +27,29 @@
pub const decoder_workbuf_len_max_incl_worst_case base.u64 = 1
pub struct decoder?(
- bad_call_sequence base.bool,
- header_complete base.bool,
+ bad_call_sequence : base.bool,
+ header_complete : base.bool,
- got_dictionary base.bool,
- want_dictionary base.bool,
+ got_dictionary : base.bool,
+ want_dictionary : base.bool,
- ignore_checksum base.bool,
- checksum adler32.hasher,
+ ignore_checksum : base.bool,
+ checksum : adler32.hasher,
- dict_id_hasher adler32.hasher,
- dict_id_got base.u32,
- dict_id_want base.u32,
+ dict_id_hasher : adler32.hasher,
+ dict_id_got : base.u32,
+ dict_id_want : base.u32,
- flate deflate.decoder,
+ flate : deflate.decoder,
- util base.utility,
+ util : base.utility,
)
pub func decoder.dictionary_id() base.u32 {
return this.dict_id_want
}
-pub func decoder.add_dictionary!(dict slice base.u8) {
+pub func decoder.add_dictionary!(dict: slice base.u8) {
if this.header_complete {
this.bad_call_sequence = true
} else {
@@ -59,7 +59,7 @@
this.got_dictionary = true
}
-pub func decoder.set_ignore_checksum!(ic base.bool) {
+pub func decoder.set_ignore_checksum!(ic: base.bool) {
this.ignore_checksum = args.ic
}
@@ -69,7 +69,7 @@
max_incl: decoder_workbuf_len_max_incl_worst_case)
}
-pub func decoder.decode_io_writer?(dst base.io_writer, src base.io_reader, workbuf slice base.u8) {
+pub func decoder.decode_io_writer?(dst: base.io_writer, src: base.io_reader, workbuf: slice base.u8) {
var x base.u16
var checksum_got base.u32
var status base.status