diff options
Diffstat (limited to 'src/common.ml')
-rw-r--r-- | src/common.ml | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/common.ml b/src/common.ml index 54df23e..9ef8bc9 100644 --- a/src/common.ml +++ b/src/common.ml @@ -1,24 +1,32 @@ [@@@warning "-32"] let sign8 v = - (v lsl ( Sys.word_size - 9 )) asr ( Sys.word_size - 9 ) + (v lsl ( Sys.int_size - 8 )) asr ( Sys.int_size - 8 ) + [@@ocaml.inline] let sign16 v = - (v lsl ( Sys.word_size - 17 )) asr ( Sys.word_size - 17 ) + (v lsl ( Sys.int_size - 16 )) asr ( Sys.int_size - 16 ) + [@@ocaml.inline] let get_uint8 s off = Char.code (get_char s off) + [@@ocaml.inline] let get_int8 s off = - ((get_uint8 s off) lsl ( Sys.word_size - 9 )) asr ( Sys.word_size - 9 ) + ((get_uint8 s off) lsl ( Sys.int_size - 8 )) asr ( Sys.int_size - 8 ) + [@@ocaml.inline] let set_int8 s off v = (* It is ok to cast using unsafe_chr because both String.set and Bigarray.Array1.set (on bigstrings) use the 'store unsigned int8' primitives that effectively extract the bits before writing *) set_char s off (Char.unsafe_chr v) + [@@ocaml.inline] let unsafe_get_uint8 s off = Char.code (unsafe_get_char s off) + [@@ocaml.inline] let unsafe_get_int8 s off = - ((unsafe_get_uint8 s off) lsl ( Sys.word_size - 9 )) asr ( Sys.word_size - 9 ) + ((unsafe_get_uint8 s off) lsl ( Sys.int_size - 8 )) asr ( Sys.int_size - 8 ) + [@@ocaml.inline] let unsafe_set_int8 s off v = unsafe_set_char s off (Char.unsafe_chr v) + [@@ocaml.inline] |