#[derive(Debug)]
pub struct IdentifierInstance<'a>(&'a Domain, Identifier<'a>);
impl<'a> IdentifierInstance<'a>
{
#[inline(always)]
pub fn new(domain: &'a Domain, identifier: Identifier<'a>) -> Self
{
assert!(!identifier.is_null(), "Identifier is null-equivalent");
unsafe { __itt_id_create(domain.constant_pointer(), identifier.0.clone()) };
IdentifierInstance(domain, identifier)
}
#[inline(always)]
pub fn begin_frame(self) -> Frame<'a>
{
Frame::begin(Right(self))
}
#[inline(always)]
pub fn begin_region<'b : 'a, 's>(self, name: &'s StringHandle, parent: Option<IdentifierInstance<'b>>) -> Region<'a>
{
Region::begin(self, name, parent)
}
#[inline(always)]
pub fn destroy(self) -> Identifier<'a>
{
unsafe { __itt_id_destroy(self.0.constant_pointer(), (self.1).0.clone()) }
self.1
}
}