use wxdragon_sys as ffi;
#[derive(Debug)]
#[repr(C)]
pub struct DataViewItem {
inner: *const ffi::wxd_DataViewItem_t,
}
impl Default for DataViewItem {
fn default() -> Self {
let inner = unsafe { ffi::wxd_DataViewItem_Clone(std::ptr::null()) };
Self { inner }
}
}
impl From<*const ffi::wxd_DataViewItem_t> for DataViewItem {
fn from(raw: *const ffi::wxd_DataViewItem_t) -> Self {
Self { inner: raw }
}
}
impl AsRef<*const ffi::wxd_DataViewItem_t> for DataViewItem {
fn as_ref(&self) -> &*const ffi::wxd_DataViewItem_t {
&self.inner
}
}
impl std::ops::Deref for DataViewItem {
type Target = *const ffi::wxd_DataViewItem_t;
fn deref(&self) -> &Self::Target {
&self.inner
}
}
impl DataViewItem {
pub fn is_ok(&self) -> bool {
unsafe { ffi::wxd_DataViewItem_IsOk(self.inner) }
}
pub fn get_id<T>(&self) -> Option<*const T> {
if self.is_ok() {
Some(unsafe { ffi::wxd_DataViewItem_GetID(self.inner) as *const T })
} else {
None
}
}
pub fn from_id_ptr<T>(raw: *const T) -> Self {
let inner = unsafe { ffi::wxd_DataViewItem_CreateFromID(raw as *const std::ffi::c_void) };
Self { inner }
}
}
impl Drop for DataViewItem {
fn drop(&mut self) {
if !self.inner.is_null() {
unsafe { ffi::wxd_DataViewItem_Release(self.inner) };
}
}
}