1 | :- module(ltsmin_c_interface, [put_chunk/3, | |
2 | put_chunk_written/3, | |
3 | ltsmin_initialize/2, | |
4 | h_zocket2/2, | |
5 | /*ltsmin_loop,*/ | |
6 | ltsmin_teardown/2, | |
7 | put_number/2, | |
8 | create_message/1, | |
9 | append_message/2, | |
10 | read_hex_str/2, | |
11 | free_str/1, | |
12 | atom_charptr/2, | |
13 | loadfr/0, | |
14 | reset_c_counters/0]). | |
15 | ||
16 | ||
17 | foreign(put_chunk, put_chunk(+address(zmsg_t),+address(char),+integer)). | |
18 | foreign(put_chunk_written, put_chunk_written(+address(zmsg_t),+address(char),+integer)). | |
19 | foreign(ltsmin_initialize, ltsmin_initialize(+string, [-address(void)])). | |
20 | %foreign(ltsmin_loop, ltsmin_loop(+address(void))). | |
21 | foreign(h_zocket2, h_zocket2(+address(void), [-integer])). | |
22 | foreign(ltsmin_teardown, ltsmin_teardown(+address(void), +string)). | |
23 | foreign(put_number, put_number(+address(zmsg_t),+integer)). | |
24 | foreign(create_message, create_message([-address(zmsg_t)])). | |
25 | foreign(append_message, append_message(+address(zmsg_t),+address(zmsg_t))). | |
26 | foreign(read_hex_str, read_hex_str(+codes,[-address(char)])). | |
27 | foreign(free_str, free_str(+address(char))). | |
28 | foreign(atom_charptr, atom_charptr(+codes, [-address(char)])). | |
29 | foreign(reset_c_counters, reset_c_counters). | |
30 | ||
31 | ||
32 | foreign_resource(ltsmin, | |
33 | [put_chunk,put_chunk_written,ltsmin_initialize,h_zocket2,/*ltsmin_loop,*/ltsmin_teardown,put_number,create_message,append_message,read_hex_str, free_str,atom_charptr, reset_c_counters]). | |
34 | ||
35 | :- dynamic loaded/0. | |
36 | ||
37 | loadfr :- | |
38 | (loaded -> true | |
39 | ; (assert(loaded), | |
40 | %assert_dir, | |
41 | load_foreign_resource(library(ltsmin)))). |