File: 40_endianexpr.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 (35 lines) | stat: -rw-r--r-- 841 bytes parent folder | download | duplicates (2)
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
(* Endianness expressions
 * $Id: 40_endianexpr.ml 142 2008-07-17 15:45:56Z richard.wm.jones $
 *)

open Printf
open Bitstring

let () =
  let rec loop = function
    | (e, expected) :: rest ->
	let bits = BITSTRING {
	  expected : 32 : endian (e);
	  expected : 32 : endian (e);
	  expected : 32 : endian (e)
	} in
	(bitmatch bits with
	 | { actual : 32 : endian (e);
	     actual : 32 : endian (e);
	     actual : 32 : endian (e) } ->
	     if actual <> expected then
	       failwith (sprintf "actual %ld <> expected %ld" actual expected)
	 | { _ } as bits ->
	     hexdump_bitstring stderr bits; exit 1
	);
	loop rest
    | [] -> ()
  in
  loop [
    BigEndian, 0xa1b2c3d4_l;
    BigEndian, 0xa1d4c3b2_l;
    LittleEndian, 0xa1b2c3d4_l;
    LittleEndian, 0xa1d4c3b2_l;
    NativeEndian, 0xa1b2c3d4_l;
    NativeEndian, 0xa1d4c3b2_l;
  ]