sylvan_sys/
mt.rs

1use libc::{c_char, c_int, c_void, size_t, FILE};
2
3pub type MT_HASH_CB = extern "C" fn(u64, u64) -> u64;
4pub type MT_EQUALS_CB = extern "C" fn(u64, u64) -> c_int;
5pub type MT_CREATE_CB = extern "C" fn(*mut u64);
6pub type MT_DESTROY_CB = extern "C" fn(u64);
7pub type MT_TO_STR_CB = extern "C" fn(c_int, u64, *mut c_char, size_t) -> *mut c_char;
8pub type MT_WRITE_BINARY_CB = extern "C" fn(*mut FILE, u64) -> c_int;
9pub type MT_READ_BINARY_CB = extern "C" fn(*mut FILE, *mut u64) -> c_int;
10
11extern "C" {
12
13    pub fn Sylvan_init_mt() -> c_void;
14    pub fn Sylvan_mt_create_type() -> u32;
15    pub fn Sylvan_mt_set_hash(terminal_type: u32, hash_cb: MT_HASH_CB) -> c_void;
16    pub fn Sylvan_mt_set_equals(terminal_type: u32, equals_cb: MT_EQUALS_CB) -> c_void;
17    pub fn Sylvan_mt_set_create(terminal_type: u32, create_cb: MT_CREATE_CB) -> c_void;
18    pub fn Sylvan_mt_set_destroy(terminal_type: u32, destroy_cb: MT_DESTROY_CB) -> c_void;
19    pub fn Sylvan_mt_set_to_str(terminal_type: u32, to_str_cb: MT_TO_STR_CB) -> c_void;
20    pub fn Sylvan_mt_set_write_binary(
21        terminal_type: u32,
22        write_binary_cb: MT_WRITE_BINARY_CB,
23    ) -> c_void;
24    pub fn Sylvan_mt_set_read_binary(
25        terminal_type: u32,
26        read_binary_cb: MT_READ_BINARY_CB,
27    ) -> c_void;
28    pub fn Sylvan_mt_has_custom_hash(terminal_type: u32) -> c_int;
29    pub fn Sylvan_mt_hash(terminal_type: u32, value: u64, seed: u64) -> u64;
30    pub fn Sylvan_mt_to_str(
31        complement: c_int,
32        terminal_type: u32,
33        value: u64,
34        buf: *mut c_char,
35        buflen: size_t,
36    ) -> *mut c_char;
37    pub fn Sylvan_mt_write_binary(terminal_type: u32, value: u64, out: *mut FILE) -> c_int;
38    pub fn Sylvan_mt_read_binary(terminal_type: u32, value: *mut u64, input: *mut FILE) -> c_int;
39
40}