1 | % (c) 2016-2022 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, | |
2 | % Heinrich Heine Universitaet Duesseldorf | |
3 | % This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) | |
4 | ||
5 | :- module(ltsmin_c_interface, [put_chunk/3, | |
6 | put_chunk_written/3, | |
7 | ltsmin_initialize/2, | |
8 | h_zocket2/2, | |
9 | ltsmin_teardown/2, | |
10 | put_number/2, | |
11 | create_message/1, | |
12 | append_message/2, | |
13 | read_hex_str/2, | |
14 | free_str/1, | |
15 | atom_charptr/2, | |
16 | loadfr/0, | |
17 | reset_c_counters/0]). | |
18 | ||
19 | ||
20 | foreign(put_chunk, put_chunk(+address(zmsg_t),+address(char),+integer)). | |
21 | foreign(put_chunk_written, put_chunk_written(+address(zmsg_t),+address(char),+integer)). | |
22 | foreign(ltsmin_initialize, ltsmin_initialize(+string, [-address(zsock_t)])). | |
23 | foreign(h_zocket2, h_zocket2(+address(zsock_t), [-integer])). | |
24 | foreign(ltsmin_teardown, ltsmin_teardown(+address(zsock_t), +string)). | |
25 | foreign(put_number, put_number(+address(zmsg_t),+integer)). | |
26 | foreign(create_message, create_message([-address(zmsg_t)])). | |
27 | foreign(append_message, append_message(+address(zmsg_t),+address(zmsg_t))). | |
28 | foreign(read_hex_str, read_hex_str(+codes,[-address(char)])). | |
29 | foreign(free_str, free_str(+address(char))). | |
30 | foreign(atom_charptr, atom_charptr(+codes, [-address(char)])). | |
31 | foreign(reset_c_counters, reset_c_counters). | |
32 | ||
33 | :- use_module(probsrc(pathes_lib),[safe_load_foreign_resource/2]). | |
34 | ||
35 | foreign_resource(ltsmin, | |
36 | [put_chunk,put_chunk_written,ltsmin_initialize, | |
37 | h_zocket2,ltsmin_teardown, | |
38 | put_number,create_message,append_message,read_hex_str, | |
39 | free_str,atom_charptr, reset_c_counters]). | |
40 | ||
41 | :- dynamic loaded/0. | |
42 | ||
43 | loadfr :- | |
44 | (loaded -> true | |
45 | ; assertz(loaded), | |
46 | %assert_dir, | |
47 | safe_load_foreign_resource(ltsmin_c_interface,ltsmin)). |