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
use smile::{
    autocxx::c_int,
    ffi::{
        DSL_DSL_FORMAT, DSL_ERGO_FORMAT, DSL_HUGIN_FORMAT, DSL_INTERCHANGE_FORMAT, DSL_KI_FORMAT,
        DSL_NETICA_FORMAT, DSL_XDSL_FORMAT,
    },
};

use crate::traits::ToDslValue;
pub enum NetworkFileType {
    ///  Native SMILE format
    Xdsl,

    /// Old, deprecated SMILE format
    Dsl,

    /// Hugin
    Net,

    /// Netica
    Dne,

    /// Microsoft BN
    Dsc,

    /// Ergo
    Erg,

    /// DXpress
    Dxp,
}

impl ToDslValue for NetworkFileType {
    fn to_dsl_value(&self) -> c_int {
        let value = match self {
            NetworkFileType::Xdsl => DSL_XDSL_FORMAT,
            NetworkFileType::Dsl => DSL_DSL_FORMAT,
            NetworkFileType::Net => DSL_HUGIN_FORMAT,
            NetworkFileType::Dne => DSL_NETICA_FORMAT,
            NetworkFileType::Dsc => DSL_INTERCHANGE_FORMAT,
            NetworkFileType::Erg => DSL_ERGO_FORMAT,
            NetworkFileType::Dxp => DSL_KI_FORMAT,
        };

        c_int(value as i32)
    }
}