File: 18_extract_32_64_int.ml

package info (click to toggle)
ocaml-bitstring 2.0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,276 kB
  • ctags: 492
  • sloc: ml: 3,360; sh: 377; makefile: 324; ansic: 113
file content (43 lines) | stat: -rw-r--r-- 993 bytes parent folder | download | duplicates (3)
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
(* Test fix for a regression when extracting 32 and 64 bit aligned
 * integers (discovered / fixed / tested by Hans Ole Rafaelsen).
 * $Id$
 *)

open Printf

open Bitstring

let bitstring_of_int32 i =
  BITSTRING { i : 32 }

let bitstring_of_int64 i =
  BITSTRING { i : 64 }

let int32_of_bitstring bits =
  bitmatch bits with
  | { i : 32 } -> i

let int64_of_bitstring bits =
  bitmatch bits with
  | { i : 64 } -> i

let () =
  let b1 = bitstring_of_int32 1_l in
  let b2 = bitstring_of_int32 2_l in
  let b3 = bitstring_of_int32 3_l in
  let i1 = int32_of_bitstring b1 in
  let i2 = int32_of_bitstring b2 in
  let i3 = int32_of_bitstring b3 in
  assert (i1 = 1_l);
  assert (i2 = 2_l);
  assert (i3 = 3_l);

  let b1 = bitstring_of_int64 1_L in
  let b2 = bitstring_of_int64 2_L in
  let b3 = bitstring_of_int64 3_L in
  let i1 = int64_of_bitstring b1 in
  let i2 = int64_of_bitstring b2 in
  let i3 = int64_of_bitstring b3 in
  assert (i1 = 1_L);
  assert (i2 = 2_L);
  assert (i3 = 3_L)