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}