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