Implement dropbits, takebits, subbitstring.
[ocaml-bitstring.git] / bitmatch.ml
index e89e381..38e7032 100644 (file)
@@ -4,7 +4,8 @@
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2 of the License, or (at your option) any later version,
+ * with the OCaml linking exception described in COPYING.LIB.
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -125,6 +126,21 @@ let bitstring_of_file fname =
 
 let bitstring_length (_, _, len) = len
 
+let subbitstring (data, off, len) off' len' =
+  let off = off + off' in
+  if len < off' + len' then invalid_arg "subbitstring";
+  (data, off, len')
+
+let dropbits n (data, off, len) =
+  let off = off + n in
+  let len = len - n in
+  if len < 0 then invalid_arg "dropbits";
+  (data, off, len)
+
+let takebits n (data, off, len) =
+  if len < n then invalid_arg "takebits";
+  (data, off, n)
+
 (*----------------------------------------------------------------------*)
 (* Bitwise functions.
  *