use libc::c_void;
use std::mem;
use std::sync::atomic::{AtomicBool, Ordering, ATOMIC_BOOL_INIT};
static INITIALIZED: AtomicBool = ATOMIC_BOOL_INIT;
pub unsafe fn set_initialized() {
assert!(!INITIALIZED.swap(true, Ordering::SeqCst),
"Tried to initialize libUI when it was already initialized. Aborting because this is an unsafe situation.");
}
pub unsafe fn unset_initialized() {
INITIALIZED.store(false, Ordering::SeqCst);
}
pub fn is_initialized() -> bool {
INITIALIZED.load(Ordering::SeqCst)
}
pub extern "C" fn void_void_callback(data: *mut c_void) {
unsafe { mem::transmute::<*mut c_void, Box<Box<FnMut()>>>(data)() }
}