More complete handling of constant field length expressions.
[ocaml-bitstring.git] / TODO
diff --git a/TODO b/TODO
index 11e2d02..ecb0620 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,11 +1,11 @@
-$Id: TODO,v 1.1 2008-04-15 13:41:14 rjones Exp $
+$Id: TODO,v 1.5 2008-05-07 14:37:00 rjones Exp $
 Major to-do items.
 
-(1) In bitmatch operator, use patterns not expressions.
+(1) DONE - In bitmatch operator, use patterns not expressions.
 
-(2) Allow matching against strings.
+(2) DONE - Allow matching against strings.
 
-(3) Change the syntax so { ... } surrounds match patterns.
+(3) DONE - Change the syntax so { ... } surrounds match patterns.
 
 (4) Provide UInt32 and UInt64 types.
 
@@ -20,3 +20,39 @@ Major to-do items.
     { start : 16;
       another : 16 : align(32);     (* implicit 16 bit gap before this *)
     }
+
+(7) Assertions:
+
+    { start : 16 : assert (offset = 0); }
+
+   (Q: Are these evaluated at compile time or at run time or selectable?)
+
+(8) Named but unbound patterns to avoid "Warning Y: unused variable".
+
+(9) DONE -
+    Make the error locations fine-grained, particularly so they point to
+    individual fields, not the whole match.
+
+(10) 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:
+
+    { field : len : endianness(expr) }
+
+    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) More constant field lengths.
+
+(13) Implement native endian functions.
+
+(14) A proper test suite.
+
+(15) More examples:
+
+    ELF binaries
+    GIF images