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)))).