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
use std::os::raw::c_int;
use vosk_sys::*;

#[derive(Debug, Default, Clone, Copy)]
/// Log level for Kaldi messages.
pub enum LogLevel {
    /// Print Error, Info and Debug messages.
    ErrorInfoDebug,

    /// Print Error and Info, but not Debug messages (default).
    #[default]
    ErrorInfo,

    /// Only print Error messages.
    Error,
}

impl LogLevel {
    pub(self) fn to_c_int(self) -> c_int {
        match self {
            Self::ErrorInfo => 0,
            Self::Error => -1,
            Self::ErrorInfoDebug => 1,
        }
    }
}

/// Set log level for Kaldi messages.
///
/// Default: [`LogLevel::ErrorInfo`].
pub fn set_log_level(log_level: LogLevel) {
    unsafe { vosk_set_log_level(log_level.to_c_int()) }
}