jvmti_rs/wrapper/objects/
jthread_group_id.rs

1use std::marker::PhantomData;
2
3use crate::sys::{jthreadGroup};
4
5#[repr(transparent)]
6#[derive(Clone, Copy, Debug)]
7pub struct JThreadGroupID<'a> {
8    internal: jthreadGroup,
9    lifetime: PhantomData<&'a ()>,
10}
11
12impl<'a> From<jthreadGroup> for JThreadGroupID<'a> {
13    fn from(other: jthreadGroup) -> Self {
14        JThreadGroupID {
15            internal: other,
16            lifetime: PhantomData,
17        }
18    }
19}
20
21impl<'a> From<JThreadGroupID<'a>> for jthreadGroup {
22    fn from(value: JThreadGroupID<'a>) -> Self {
23        value.internal
24    }
25}
26
27impl<'a> From<&JThreadGroupID<'a>> for jthreadGroup {
28    fn from(value: &JThreadGroupID<'a>) -> Self {
29        value.internal
30    }
31}
32
33impl<'a> ::std::ops::Deref for JThreadGroupID<'a> {
34    type Target = jthreadGroup;
35
36    fn deref(&self) -> &Self::Target {
37        &self.internal
38    }
39}
40
41impl<'a> JThreadGroupID<'a> {
42    /// Creates a new null threadGroup
43    pub fn null() -> JThreadGroupID<'a> {
44        (::std::ptr::null_mut() as jthreadGroup).into()
45    }
46}