diff options
| author | Alasdair Armstrong | 2018-01-18 18:16:45 +0000 |
|---|---|---|
| committer | Alasdair Armstrong | 2018-01-18 18:31:26 +0000 |
| commit | 0fa42d315e20f819af93c2a822ab1bc032dc4535 (patch) | |
| tree | 7ef4ea3444ba5938457e7c852f9ad9957055fe41 /lib/ocaml_rts/linksem/ml_bindings.ml | |
| parent | 24dc13511053ab79ccb66ae24e3b8ffb9cad0690 (diff) | |
Modified ocaml backend to use ocamlfind for linksem and lem
Fixed test cases for ocaml backend and interpreter
Diffstat (limited to 'lib/ocaml_rts/linksem/ml_bindings.ml')
| -rw-r--r-- | lib/ocaml_rts/linksem/ml_bindings.ml | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/lib/ocaml_rts/linksem/ml_bindings.ml b/lib/ocaml_rts/linksem/ml_bindings.ml deleted file mode 100644 index ed7c05fe..00000000 --- a/lib/ocaml_rts/linksem/ml_bindings.ml +++ /dev/null @@ -1,156 +0,0 @@ -open Endianness -open Error - -open Printf -open Unix - -let string_of_unix_time (tm : Nat_big_num.num) = - let num = Nat_big_num.to_int64 tm in - let tm = Unix.gmtime (Int64.to_float num) in - let day = tm.tm_mday in - let mon = 1 + tm.tm_mon in - let year = 1900 + tm.tm_year in - let hour = tm.tm_hour in - let min = tm.tm_min in - let sec = tm.tm_sec in - Printf.sprintf "%i-%i-%iT%02i:%02i:%02i" year mon day hour min sec - -let hex_string_of_nat_pad2 i : string = - Printf.sprintf "%02i" i -;; - -let hex_string_of_big_int_pad6 i : string = - let i0 = Nat_big_num.to_int64 i in - Printf.sprintf "%06Lx" i0 -;; - -let hex_string_of_big_int_pad7 i : string = - let i0 = Nat_big_num.to_int64 i in - Printf.sprintf "%07Lx" i0 -;; - -let hex_string_of_big_int_pad2 i : string = - let i0 = Nat_big_num.to_int64 i in - Printf.sprintf "%02Lx" i0 -;; - -let hex_string_of_big_int_pad4 i : string = - let i0 = Nat_big_num.to_int64 i in - Printf.sprintf "%04Lx" i0 -;; - -let hex_string_of_big_int_pad5 i : string = - let i0 = Nat_big_num.to_int64 i in - Printf.sprintf "%05Lx" i0 -;; - -let hex_string_of_big_int_pad8 i : string = - let i0 = Nat_big_num.to_int64 i in - Printf.sprintf "%08Lx" i0 -;; - -let hex_string_of_big_int_pad16 i : string = - let i0 = Nat_big_num.to_int64 i in - Printf.sprintf "%016Lx" i0 -;; - -let hex_string_of_big_int_no_padding i : string = - let i0 = Nat_big_num.to_int64 i in - if Int64.compare i0 Int64.zero < 0 then - let i0 = Int64.neg i0 in - Printf.sprintf "-%Lx" i0 - else - Printf.sprintf "%Lx" i0 -;; - -let bytes_of_int32 (i : Int32.t) = assert false -;; - -let bytes_of_int64 (i : Int64.t) = assert false -;; - -let int32_of_quad c1 c2 c3 c4 = - let b1 = Int32.of_int (Char.code c1) in - let b2 = Int32.shift_left (Int32.of_int (Char.code c2)) 8 in - let b3 = Int32.shift_left (Int32.of_int (Char.code c3)) 16 in - let b4 = Int32.shift_left (Int32.of_int (Char.code c4)) 24 in - Int32.add b1 (Int32.add b2 (Int32.add b3 b4)) -;; - -let int64_of_oct c1 c2 c3 c4 c5 c6 c7 c8 = - let b1 = Int64.of_int (Char.code c1) in - let b2 = Int64.shift_left (Int64.of_int (Char.code c2)) 8 in - let b3 = Int64.shift_left (Int64.of_int (Char.code c3)) 16 in - let b4 = Int64.shift_left (Int64.of_int (Char.code c4)) 24 in - let b5 = Int64.shift_left (Int64.of_int (Char.code c5)) 32 in - let b6 = Int64.shift_left (Int64.of_int (Char.code c6)) 40 in - let b7 = Int64.shift_left (Int64.of_int (Char.code c7)) 48 in - let b8 = Int64.shift_left (Int64.of_int (Char.code c8)) 56 in - Int64.add b1 (Int64.add b2 (Int64.add b3 (Int64.add b4 - (Int64.add b5 (Int64.add b6 (Int64.add b7 b8)))))) -;; - -let decimal_string_of_int64 e = - let i = Int64.to_int e in - string_of_int i -;; - -let hex_string_of_int64 (e : Int64.t) : string = - let i = Int64.to_int e in - Printf.sprintf "0x%x" i -;; - -let string_suffix index str = - if (* index < 0 *) Nat_big_num.less index (Nat_big_num.of_int 0) || - (* index > length str *) (Nat_big_num.greater index (Nat_big_num.of_int (String.length str))) then - None - else - let idx = Nat_big_num.to_int index in - Some (String.sub str idx (String.length str - idx)) -;; - -let string_prefix index str = - if (* index < 0 *) Nat_big_num.less index (Nat_big_num.of_int 0) || - (* index > length str *) (Nat_big_num.greater index (Nat_big_num.of_int (String.length str))) then - None - else - let idx = Nat_big_num.to_int index in - Some (String.sub str 0 idx) -;; - -let string_index_of (c: char) (s : string) = try Some(Nat_big_num.of_int (String.index s c)) - with Not_found -> None -;; - -let find_substring (sub: string) (s : string) = - try Some(Nat_big_num.of_int (Str.search_forward (Str.regexp_string sub) s 0)) - with Not_found -> None -;; - -let rec list_index_big_int index xs = - match xs with - | [] -> None - | x::xs -> - if Nat_big_num.equal index (Nat_big_num.of_int 0) then - Some x - else - list_index_big_int (Nat_big_num.sub index (Nat_big_num.of_int 1)) xs -;; - -let argv_list = Array.to_list Sys.argv -;; - -let nat_big_num_of_uint64 x = - (* Nat_big_num can only be made from signed integers at present. - * Workaround: make an int64, and if negative, add the high bit - * in the big-num domain. *) - let via_int64 = Uint64.to_int64 x - in - if Int64.compare via_int64 Int64.zero >= 0 then Nat_big_num.of_int64 via_int64 - else - let two_to_63 = Uint64.shift_left (Uint64.of_int 1) 63 in - let lower_by_2_to_63 = Uint64.sub x two_to_63 in - (Nat_big_num.add - (Nat_big_num.of_int64 (Uint64.to_int64 lower_by_2_to_63)) - (Nat_big_num.shift_left (Nat_big_num.of_int 1) 63) - ) |
