(4) Provide UInt32 and UInt64 types.
-(5) Allow for specific offsets and alignment. Something like this:
+(5) DONE - Allow for specific offsets and alignment. Something like this:
{ start : 16;
another : 16 : offset(256); (* location would be 256 bits from start *)
Make the error locations fine-grained, particularly so they point to
individual fields, not the whole match.
-(10) Cross-module, persistent, named patterns, see:
+(10) DONE - Cross-module, persistent, named patterns, see:
http://caml.inria.fr/pub/ml-archives/caml-list/2008/04/25992c9c9fa999fe1d35d961dd9917a2.en.html
-(11) Runtime endiannness expressions. The suggested syntax is:
+(11) DONE -
+ Runtime endiannness expressions. The suggested syntax is:
- { field : len : endianness(expr) }
+ { field : len : endian (expr) }
- where expr would evaluate to something like `BigEndian or
- `LittleEndian.
+ where expr would evaluate to something like BigEndian or
+ LittleEndian.
There are several protocols around where endianness is only
determined at runtime, examples are libpcap and TIFF.
(12) DONE - More constant field lengths.
-(13) Implement native endian functions.
+(13) PARTLY DONE - Implement native endian functions.
-(14) A proper test suite.
+(14) PARTLY DONE - A proper test suite.
-(15) More examples:
+(15) DONE - More examples:
ELF binaries
GIF images
+
+(16) We now know the offset of the current field relative to the
+ whole match. This may allow more efficient aligned versions
+ of functions to be called (at compile time). However do note
+ that the offset in the bitstring is usually not known.
+
+(17) Fix the META file. Current one is very broken.