diff options
author | ubq323 <ubq323@ubq323.website> | 2024-04-22 01:21:38 +0100 |
---|---|---|
committer | ubq323 <ubq323@ubq323.website> | 2024-04-22 01:21:38 +0100 |
commit | 4c7156d0b20447e29f354679acdcd28480df91bc (patch) | |
tree | fdcaca21c06781a8732e50c6081cbc8ea30c3fc8 /packet_reader/rle.ha | |
parent | 11c8b134d7de3d7b2249d74b26a87bc9d6acc27d (diff) |
rlerle
Diffstat (limited to 'packet_reader/rle.ha')
-rw-r--r-- | packet_reader/rle.ha | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/packet_reader/rle.ha b/packet_reader/rle.ha index af9f080..36e0b29 100644 --- a/packet_reader/rle.ha +++ b/packet_reader/rle.ha @@ -16,11 +16,11 @@ export fn rle_encode(d: []u32) []u32 = { for (ix < len(d) && d[ix] == this) ix += 1; const val = this; let count = (ix - start): int; - fmt::printfln("#{:_06x} x{}",val, count)!; - for (count > 0) { - append(out, item_encode(count%256, val)); + for (count > 256) { + append(out, item_encode(256, val)); count -= 256; }; + append(out, item_encode(count, val)); start = ix; }; return out; @@ -63,3 +63,16 @@ fn dotest(eu: []u32) void = { @test fn oeuoeu2() void = dotest([1,1,1]); @test fn oeuoeu2() void = dotest([1,6]); @test fn oeuoeu2() void = dotest([1]); + +fn testm(n: size) void = { + let e: []u32 = []; + append(e, [17...], n); + defer free(e); + dotest(e); +}; + +@test fn t254() void = testm(254); +@test fn t255() void = testm(255); +@test fn t256() void = testm(256); +@test fn t257() void = testm(257); +@test fn t258() void = testm(258); |