teamtalk_sys/
lib.rs

1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4#![allow(unused_imports)]
5#![allow(unused_variables)]
6#![allow(clippy::all)]
7
8use once_cell::sync::OnceCell;
9use std::sync::Arc;
10
11include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
12
13static INSTANCE: OnceCell<Arc<TeamTalk5>> = OnceCell::new();
14
15pub fn load(path: &str) -> Result<(), Box<dyn std::error::Error>> {
16    let lib = unsafe { TeamTalk5::new(path)? };
17    let _ = INSTANCE.set(Arc::new(lib));
18    Ok(())
19}
20
21pub fn api() -> Arc<TeamTalk5> {
22    INSTANCE
23        .get()
24        .expect("TeamTalk DLL not loaded! Call teamtalk_sys::load() first.")
25        .clone()
26}