use crate::util::access_sys_fn;
use std::ffi::CString;
pub struct Domain(*mut ittapi_sys::__itt_domain);
impl Domain {
#[must_use]
pub fn new(name: &str) -> Self {
#[cfg(unix)]
let create_fn = access_sys_fn!(__itt_domain_create_ptr__3_0);
#[cfg(windows)]
let create_fn = access_sys_fn!(__itt_domain_createA_ptr__3_0);
let c_string =
CString::new(name).expect("unable to create a CString; does it contain a 0 byte?");
let domain = unsafe { create_fn(c_string.as_ptr()) };
Self(domain)
}
pub(crate) fn as_ptr(&self) -> *const ittapi_sys::__itt_domain {
self.0 as *const _
}
}
unsafe impl Sync for Domain {}