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
#![allow(non_snake_case)]
extern crate libc;
extern crate libloading as lib;

use libc::{c_int, c_float};

#[cfg(target_arch = "x86")]
unsafe fn get_library() -> lib::Library {
    lib::Library::new("RailDriver.dll").unwrap()
}

#[cfg(target_arch = "x86_64")]
unsafe fn get_library() -> lib::Library {
    lib::Library::new("RailDriver64.dll").unwrap()
}

pub unsafe fn GetRailSimValue(id: c_int, modifier: c_int) -> c_float {
    let rd = get_library();
    rd.get::<unsafe extern fn(c_int, c_int) -> c_float>(b"GetRailSimValue").unwrap()(id, modifier)
}
pub unsafe fn SetRailSimValue(id: c_int, value: c_int) {
    let rd = get_library();
    rd.get::<unsafe extern fn(c_int, c_int)>(b"SetRailSimValue").unwrap()(id, value)
}

pub unsafe fn SetRailDriverConnected(isConnected: bool) {
    let rd = get_library();
    rd.get::<unsafe extern fn(bool)>(b"SetRailDriverConnected").unwrap()(isConnected)
}
pub unsafe fn GetNextRailDriverId(start: c_int) -> c_int {
    let rd = get_library();
    rd.get::<unsafe extern fn(c_int) -> c_int>(b"GetNextRailDriverId").unwrap()(start)
}
pub unsafe fn GetRailDriverValue(id: c_int) -> c_float {
    let rd = get_library();
    rd.get::<unsafe extern fn(c_int) -> c_float>(b"GetRailDriverValue").unwrap()(id)
}

pub unsafe fn GetRailSimConnected() -> bool {
    let rd = get_library();
    rd.get::<unsafe extern fn() -> bool>(b"GetRailSimConnected").unwrap()()
}
pub unsafe fn SetRailSimConnected(isConnected: bool) {
    let rd = get_library();
    rd.get::<unsafe extern fn(bool)>(b"SetRailSimConnected").unwrap()(isConnected)
}
pub unsafe fn GetRailSimLocoChanged() -> bool {
    let rd = get_library();
    rd.get::<unsafe extern fn() -> bool>(b"GetRailSimLocoChanged").unwrap()()
}
pub unsafe fn GetRailSimCombinedThrottleBrake() -> bool {
    let rd = get_library();
    rd.get::<unsafe extern fn() -> bool>(b"GetRailSimCombinedThrottleBrake").unwrap()()
}