-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathTODO
61 lines (38 loc) · 1.78 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
- better documentation for text methods (add_code, code_get, code_put, ...)
- documentation for BLVec
- tests for consistent die return strings
x read unary off end of stream
x put negative numbers should give "value must be >= 0" for all put_*
x write with undefined value
- put_* with undefined parameters or undef value
- get_* with undefined parameters
- put_string with invalid string (e.g. '0012')
- test all open modes, especially write-only
- Export
- text code needs some redoing
- tie to a file to avoid holding everything in memory.
Either File::Map or PerlIO :mmap or Sys::Mmap
- Better documentation for Additive.
- range testing for comma and block taboo codes
- test for read_open. Should read_open / write_open be private? Should they
take a hash like new? (e.g. write_open( file=>'foo') )
- Change test library and usage to get an encoding list by stream, rather than
a global list.
- Add BER and Varint to standard test list.
This requires encoding lists by stream (the previous TODO).
CODES:
- Sayood's NF3 codes (Lossless Compression Handbook pages 67-70). Generalized
Fibonacci code, with terminator change. Can be a little shorter than the
C2 codes, and he claims they're faster to encode/decode.
- Adaptive Golomb.
- Fenwick punctured codes
- Stout codes
- Yamamoto C(a,f)(n) codes (Yamamoto 2000)
- Pigeon's unconstrained taboo codes. Described in taboo.ps. Block codes are
done. Since the unconstrained codes have identical lengths to generalized
Fibonacci codes, and these are efficiently implemented here and in XS, I
don't think there is a pressing need to do these.
- Thoughts on Huffman, arithmetic
- Methods should return self, so we could do:
say Data::BitStream->new->put_fib(@values)->to_string;
- Document BER and Varint