From 015403b0323397360bab062eaaac70ddaa9e3100 Mon Sep 17 00:00:00 2001 From: mzp Date: Fri, 4 Sep 2009 19:51:40 +0900 Subject: [PATCH] support 64bit --- scm/codegen/bytesTest.ml | 4 ++-- xml/byte.ml | 11 +++++++---- xml/byteTest.ml | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/scm/codegen/bytesTest.ml b/scm/codegen/bytesTest.ml index f02f79d..8ae8549 100644 --- a/scm/codegen/bytesTest.ml +++ b/scm/codegen/bytesTest.ml @@ -41,7 +41,7 @@ let _ = ok [1;0;0] [s24 1]; ok [0xFF;0xFF;0xFF] [s24 0xFFFFFF]; ok [0xFF;0xFF;0xFF] [s24 ~-1]); - "u32" >::: [ + "u30" >::: [ "1byte" >:: (fun () -> ok [0] [u30 0]; @@ -62,7 +62,7 @@ let _ = "5 byte/29-35bit" >:: (fun () -> ok [0xFF;0xFF;0xFF;0xFF;0x01] [u30 0x1FFF_FFFF]; - ok [0xFF;0xFF;0xFF;0xFF;0xF] [u30 0x7FFF_FFFF])]; + ok [0xFF;0xFF;0xFF;0xFF;0x7] [u30 0x7FFF_FFFF])]; "s32" >:: (fun () -> ok [0x00] [s32 0]; diff --git a/xml/byte.ml b/xml/byte.ml index 26a21e6..351dc82 100644 --- a/xml/byte.ml +++ b/xml/byte.ml @@ -1,7 +1,7 @@ open Base let of_channel ch = - Stream.from (fun pos -> + Stream.from (fun pos -> try Some (input_byte ch) with End_of_file -> @@ -10,18 +10,21 @@ let of_channel ch = let (++) x y = (x lsl 8) + y -let byte = +let byte = Stream.next -let u8 = +let u8 = parser [] -> c let u16 = parser [] -> n1 ++ n2 +let size = + Sys.word_size - 24 - 1 + let s_extend d = - (d lsl 7) asr 7 + (d lsl size) asr size let s24 = parser [] -> diff --git a/xml/byteTest.ml b/xml/byteTest.ml index 29e0710..5ff473d 100644 --- a/xml/byteTest.ml +++ b/xml/byteTest.ml @@ -9,7 +9,7 @@ let of_list xs = let ok x y = OUnit.assert_equal ~printer:Std.dump x y -let tests = ("byte module test" >::: [ +let tests = ("byte.ml" >::: [ "u8 is single byte" >:: (fun _ -> ok 0 (u8 @@ of_list [0])); -- 2.11.0