1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
pub use autocxx;

pub mod ffi {
    use autocxx::prelude::*;

    include_cpp! {
        #include "smile.h"
        #include "smile_license.h"

        safety!(unsafe)

        // Structures
        generate!("DSL_pattern")
        generate!("DSL_network")

        // Constants
        generate!("DSL_XDSL_FORMAT")
        generate!("DSL_DSL_FORMAT")
        generate!("DSL_HUGIN_FORMAT")
        generate!("DSL_NETICA_FORMAT")
        generate!("DSL_INTERCHANGE_FORMAT")
        generate!("DSL_ERGO_FORMAT")
        generate!("DSL_KI_FORMAT")

        // Error codes constants
        generate!("DSL_OKAY")
        generate!("DSL_GENERAL_ERROR")
        generate!("DSL_OUT_OF_RANGE")
        generate!("DSL_NO_ITEM")
        generate!("DSL_INVALID_VALUE")
        generate!("DSL_NO_USEFUL_SAMPLES")
        generate!("DSL_CANT_SOLVE_EQUATION")
        generate!("DSL_CYCLE_DETECTED")
        generate!("DSL_WRONG_NUM_STATES")
        generate!("DSL_CONFLICTING_EVIDENCE")
        generate!("DSL_ILLEGAL_ID")
        generate!("DSL_DUPLICATED_ID")
        generate!("DSL_OUT_OF_MEMORY")
        generate!("DSL_ZERO_POTENTIAL")
        generate!("DSL_WRONG_NODE_TYPE")
        generate!("DSL_WRONG_ELEMENT_TYPE")
        generate!("DSL_INTERRUPTED")
        generate!("DSL_FILE_READ")
        generate!("DSL_FILE_WRITE")
        generate!("DSL_END_OF_FILE")
        generate!("DSL_WRONG_FILE")
        generate!("DSL_NO_MORE_TOKENS")
        generate!("DSL_LEXICAL_ERROR")
        generate!("DSL_SYNTAX_ERROR")
        generate!("DSL_UNEXPECTED_EOF")
        generate!("DSL_FIELD_NOT_FOUND")

        // Algorithm constants
        generate!("DSL_ALG_BN_LAURITZEN")
        generate!("DSL_ALG_BN_RELEVANCEDECOMP")
        generate!("DSL_ALG_BN_RELEVANCEDECOMP2")
        generate!("DSL_ALG_BN_EPISSAMPLING")
        generate!("DSL_ALG_BN_LBP")
        generate!("DSL_ALG_BN_AISSAMPLING")
        generate!("DSL_ALG_BN_LSAMPLING")
        generate!("DSL_ALG_BN_HENRION")

        generate!("DSL_ALG_ID_COOPERSOLVING")
        generate!("DSL_ALG_ID_SHACHTER")
    }

    pub use ffi::*;
}