blob: 3d1cd35e802f98e937c81d17efacd2a7fc23755d (
plain) (
blame)
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
|
(* open Ctypes *)
module Types = Types_generated
module Functions (F : Ctypes.FOREIGN) = struct
(* open F *)
open Ctypes_static
let os_extension =
if Sys.os_type = "Unix" then
let ic = Unix.open_process_in "uname" in
let uname = input_line ic in
let () = close_in ic in
if uname = "Darwin" then
"dylib"
else "so"
else "dll"
let libmerklecpp =
Dl.dlopen
~flags:[RTLD_GLOBAL; RTLD_NOW]
~filename:((Sys.getenv "LIBRELATIONAL_ENGINE_LIB_PATH") ^ "/librelational_engine." ^ os_extension)
let compute_hash = Foreign.foreign ~from:libmerklecpp "compute_hash" (ptr char @-> Ctypes.string @-> returning void)
let merkle_generate_root = Foreign.foreign ~from:libmerklecpp "merkle_generate_root" (ptr Ctypes.string @-> int @-> ptr char @-> returning void)
let register_to_merkle = Foreign.foreign ~from:libmerklecpp "register_to_merkle" (Ctypes.string @-> Ctypes.string @-> returning void)
end
|