From 9dbaa8149efdfa2b0dec76624fe741932cdc2887 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 21 Jan 2019 14:37:11 +0100 Subject: [PATCH] generate from_glib_borrow implementation for const pointers --- src/boxed.rs | 8 ++++++++ src/object.rs | 9 +++++++++ src/shared.rs | 8 ++++++++ 3 files changed, 25 insertions(+) diff --git a/src/boxed.rs b/src/boxed.rs index b042948f..d30937a3 100644 --- a/src/boxed.rs +++ b/src/boxed.rs @@ -205,6 +205,14 @@ macro_rules! glib_boxed_wrapper { } } + #[doc(hidden)] + impl $crate::translate::FromGlibPtrBorrow<*const $ffi_name> for $name { + #[inline] + unsafe fn from_glib_borrow(ptr: *const $ffi_name) -> Self { + $crate::translate::from_glib_borrow(ptr as *mut $ffi_name) + } + } + #[doc(hidden)] impl $crate::translate::FromGlibContainerAsVec<*mut $ffi_name, *mut *mut $ffi_name> for $name { unsafe fn from_glib_none_num_as_vec(ptr: *mut *mut $ffi_name, num: usize) -> Vec { diff --git a/src/object.rs b/src/object.rs index 46f95ee7..d5ca1ca5 100644 --- a/src/object.rs +++ b/src/object.rs @@ -531,6 +531,15 @@ macro_rules! glib_object_wrapper { } } + #[doc(hidden)] + impl $crate::translate::FromGlibPtrBorrow<*const $ffi_name> for $name { + #[inline] + #[cfg_attr(feature = "cargo-clippy", allow(cast_ptr_alignment))] + unsafe fn from_glib_borrow(ptr: *const $ffi_name) -> Self { + $crate::translate::from_glib_borrow(ptr as *mut $ffi_name) + } + } + #[doc(hidden)] impl $crate::translate::FromGlibContainerAsVec<*mut $ffi_name, *mut *mut $ffi_name> for $name { unsafe fn from_glib_none_num_as_vec(ptr: *mut *mut $ffi_name, num: usize) -> Vec { diff --git a/src/shared.rs b/src/shared.rs index e68d521c..e5c7564c 100644 --- a/src/shared.rs +++ b/src/shared.rs @@ -184,6 +184,14 @@ macro_rules! glib_shared_wrapper { } } + #[doc(hidden)] + impl $crate::translate::FromGlibPtrBorrow<*const $ffi_name> for $name { + #[inline] + unsafe fn from_glib_borrow(ptr: *const $ffi_name) -> Self { + $crate::translate::from_glib_borrow(ptr as *mut $ffi_name) + } + } + #[doc(hidden)] impl $crate::translate::FromGlibContainerAsVec<*mut $ffi_name, *mut *mut $ffi_name> for $name { unsafe fn from_glib_none_num_as_vec(ptr: *mut *mut $ffi_name, num: usize) -> Vec {