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