Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid transmute for direct return values where no translation occurs #1911

Merged
merged 2 commits into from
Jul 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion crates/libs/bindgen/src/com_methods.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ pub fn gen(gen: &Gen, def: TypeDef, kind: InterfaceKind, method: MethodDef, meth
#doc
#features
pub unsafe fn #name<#generics>(&self, #params) #return_type #where_clause {
::core::mem::transmute((::windows::core::Interface::vtable(self)#bases.#vname)(::windows::core::Interface::as_raw(self), #args))
(::windows::core::Interface::vtable(self)#bases.#vname)(::windows::core::Interface::as_raw(self), #args)
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion crates/libs/bindgen/src/functions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ fn gen_win_function(gen: &Gen, def: MethodDef) -> TokenStream {
extern "system" {
fn #name(#(#abi_params),*) #abi_return_type;
}
::core::mem::transmute(#name(#args))
#name(#args)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,16 +225,16 @@ impl IMLOperatorKernelCreationContext {
(::windows::core::Interface::vtable(self).base__.GetStringAttributeElement)(::windows::core::Interface::as_raw(self), name.into(), elementindex, attributeelement.len() as _, ::core::mem::transmute(::windows::core::as_mut_ptr_or_null(attributeelement))).ok()
}
pub unsafe fn GetInputCount(&self) -> u32 {
::core::mem::transmute((::windows::core::Interface::vtable(self).GetInputCount)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).GetInputCount)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn GetOutputCount(&self) -> u32 {
::core::mem::transmute((::windows::core::Interface::vtable(self).GetOutputCount)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).GetOutputCount)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn IsInputValid(&self, inputindex: u32) -> bool {
::core::mem::transmute((::windows::core::Interface::vtable(self).IsInputValid)(::windows::core::Interface::as_raw(self), inputindex))
(::windows::core::Interface::vtable(self).IsInputValid)(::windows::core::Interface::as_raw(self), inputindex)
}
pub unsafe fn IsOutputValid(&self, outputindex: u32) -> bool {
::core::mem::transmute((::windows::core::Interface::vtable(self).IsOutputValid)(::windows::core::Interface::as_raw(self), outputindex))
(::windows::core::Interface::vtable(self).IsOutputValid)(::windows::core::Interface::as_raw(self), outputindex)
}
pub unsafe fn GetInputEdgeDescription(&self, inputindex: u32) -> ::windows::core::Result<MLOperatorEdgeDescription> {
let mut result__ = ::core::mem::MaybeUninit::zeroed();
Expand All @@ -245,7 +245,7 @@ impl IMLOperatorKernelCreationContext {
(::windows::core::Interface::vtable(self).GetOutputEdgeDescription)(::windows::core::Interface::as_raw(self), outputindex, ::core::mem::transmute(result__.as_mut_ptr())).from_abi::<MLOperatorEdgeDescription>(result__)
}
pub unsafe fn HasTensorShapeDescription(&self) -> bool {
::core::mem::transmute((::windows::core::Interface::vtable(self).HasTensorShapeDescription)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).HasTensorShapeDescription)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn GetTensorShapeDescription(&self) -> ::windows::core::Result<IMLOperatorTensorShapeDescription> {
let mut result__ = ::core::mem::MaybeUninit::zeroed();
Expand Down Expand Up @@ -464,16 +464,16 @@ impl IMLOperatorShapeInferenceContext {
(::windows::core::Interface::vtable(self).base__.GetStringAttributeElement)(::windows::core::Interface::as_raw(self), name.into(), elementindex, attributeelement.len() as _, ::core::mem::transmute(::windows::core::as_mut_ptr_or_null(attributeelement))).ok()
}
pub unsafe fn GetInputCount(&self) -> u32 {
::core::mem::transmute((::windows::core::Interface::vtable(self).GetInputCount)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).GetInputCount)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn GetOutputCount(&self) -> u32 {
::core::mem::transmute((::windows::core::Interface::vtable(self).GetOutputCount)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).GetOutputCount)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn IsInputValid(&self, inputindex: u32) -> bool {
::core::mem::transmute((::windows::core::Interface::vtable(self).IsInputValid)(::windows::core::Interface::as_raw(self), inputindex))
(::windows::core::Interface::vtable(self).IsInputValid)(::windows::core::Interface::as_raw(self), inputindex)
}
pub unsafe fn IsOutputValid(&self, outputindex: u32) -> bool {
::core::mem::transmute((::windows::core::Interface::vtable(self).IsOutputValid)(::windows::core::Interface::as_raw(self), outputindex))
(::windows::core::Interface::vtable(self).IsOutputValid)(::windows::core::Interface::as_raw(self), outputindex)
}
pub unsafe fn GetInputEdgeDescription(&self, inputindex: u32) -> ::windows::core::Result<MLOperatorEdgeDescription> {
let mut result__ = ::core::mem::MaybeUninit::zeroed();
Expand Down Expand Up @@ -610,22 +610,22 @@ pub struct IMLOperatorShapeInferrer_Vtbl {
pub struct IMLOperatorTensor(::windows::core::IUnknown);
impl IMLOperatorTensor {
pub unsafe fn GetDimensionCount(&self) -> u32 {
::core::mem::transmute((::windows::core::Interface::vtable(self).GetDimensionCount)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).GetDimensionCount)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn GetShape(&self, dimensions: &mut [u32]) -> ::windows::core::Result<()> {
(::windows::core::Interface::vtable(self).GetShape)(::windows::core::Interface::as_raw(self), dimensions.len() as _, ::core::mem::transmute(::windows::core::as_mut_ptr_or_null(dimensions))).ok()
}
pub unsafe fn GetTensorDataType(&self) -> MLOperatorTensorDataType {
::core::mem::transmute((::windows::core::Interface::vtable(self).GetTensorDataType)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).GetTensorDataType)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn IsCpuData(&self) -> bool {
::core::mem::transmute((::windows::core::Interface::vtable(self).IsCpuData)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).IsCpuData)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn IsDataInterface(&self) -> bool {
::core::mem::transmute((::windows::core::Interface::vtable(self).IsDataInterface)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).IsDataInterface)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn GetData(&self) -> *mut ::core::ffi::c_void {
::core::mem::transmute((::windows::core::Interface::vtable(self).GetData)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).GetData)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn GetDataInterface(&self, datainterface: *mut ::core::option::Option<::windows::core::IUnknown>) {
(::windows::core::Interface::vtable(self).GetDataInterface)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(datainterface))
Expand Down Expand Up @@ -690,7 +690,7 @@ impl IMLOperatorTensorShapeDescription {
(::windows::core::Interface::vtable(self).GetInputTensorShape)(::windows::core::Interface::as_raw(self), inputindex, dimensions.len() as _, ::core::mem::transmute(::windows::core::as_mut_ptr_or_null(dimensions))).ok()
}
pub unsafe fn HasOutputShapeDescription(&self) -> bool {
::core::mem::transmute((::windows::core::Interface::vtable(self).HasOutputShapeDescription)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).HasOutputShapeDescription)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn GetOutputTensorDimensionCount(&self, outputindex: u32) -> ::windows::core::Result<u32> {
let mut result__ = ::core::mem::MaybeUninit::zeroed();
Expand Down Expand Up @@ -776,16 +776,16 @@ impl IMLOperatorTypeInferenceContext {
(::windows::core::Interface::vtable(self).base__.GetStringAttributeElement)(::windows::core::Interface::as_raw(self), name.into(), elementindex, attributeelement.len() as _, ::core::mem::transmute(::windows::core::as_mut_ptr_or_null(attributeelement))).ok()
}
pub unsafe fn GetInputCount(&self) -> u32 {
::core::mem::transmute((::windows::core::Interface::vtable(self).GetInputCount)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).GetInputCount)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn GetOutputCount(&self) -> u32 {
::core::mem::transmute((::windows::core::Interface::vtable(self).GetOutputCount)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).GetOutputCount)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn IsInputValid(&self, inputindex: u32) -> bool {
::core::mem::transmute((::windows::core::Interface::vtable(self).IsInputValid)(::windows::core::Interface::as_raw(self), inputindex))
(::windows::core::Interface::vtable(self).IsInputValid)(::windows::core::Interface::as_raw(self), inputindex)
}
pub unsafe fn IsOutputValid(&self, outputindex: u32) -> bool {
::core::mem::transmute((::windows::core::Interface::vtable(self).IsOutputValid)(::windows::core::Interface::as_raw(self), outputindex))
(::windows::core::Interface::vtable(self).IsOutputValid)(::windows::core::Interface::as_raw(self), outputindex)
}
pub unsafe fn GetInputEdgeDescription(&self, inputindex: u32) -> ::windows::core::Result<MLOperatorEdgeDescription> {
let mut result__ = ::core::mem::MaybeUninit::zeroed();
Expand Down
2 changes: 1 addition & 1 deletion crates/libs/windows/src/Windows/Win32/Data/HtmlHelp/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1150,7 +1150,7 @@ impl IITPropList {
#[doc = "*Required features: `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
pub unsafe fn IsDirty(&self) -> ::windows::core::HRESULT {
::core::mem::transmute((::windows::core::Interface::vtable(self).base__.IsDirty)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).base__.IsDirty)(::windows::core::Interface::as_raw(self))
}
#[doc = "*Required features: `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
Expand Down
16 changes: 8 additions & 8 deletions crates/libs/windows/src/Windows/Win32/Data/Xml/XmlLite/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -137,24 +137,24 @@ impl IXmlReader {
(::windows::core::Interface::vtable(self).SetProperty)(::windows::core::Interface::as_raw(self), nproperty, pvalue).ok()
}
pub unsafe fn Read(&self, pnodetype: *mut XmlNodeType) -> ::windows::core::HRESULT {
::core::mem::transmute((::windows::core::Interface::vtable(self).Read)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pnodetype)))
(::windows::core::Interface::vtable(self).Read)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pnodetype))
}
pub unsafe fn GetNodeType(&self) -> ::windows::core::Result<XmlNodeType> {
let mut result__ = ::core::mem::MaybeUninit::zeroed();
(::windows::core::Interface::vtable(self).GetNodeType)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(result__.as_mut_ptr())).from_abi::<XmlNodeType>(result__)
}
pub unsafe fn MoveToFirstAttribute(&self) -> ::windows::core::HRESULT {
::core::mem::transmute((::windows::core::Interface::vtable(self).MoveToFirstAttribute)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).MoveToFirstAttribute)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn MoveToNextAttribute(&self) -> ::windows::core::HRESULT {
::core::mem::transmute((::windows::core::Interface::vtable(self).MoveToNextAttribute)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).MoveToNextAttribute)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn MoveToAttributeByName<'a, P0, P1>(&self, pwszlocalname: P0, pwsznamespaceuri: P1) -> ::windows::core::HRESULT
where
P0: ::std::convert::Into<::windows::core::PCWSTR>,
P1: ::std::convert::Into<::windows::core::PCWSTR>,
{
::core::mem::transmute((::windows::core::Interface::vtable(self).MoveToAttributeByName)(::windows::core::Interface::as_raw(self), pwszlocalname.into(), pwsznamespaceuri.into()))
(::windows::core::Interface::vtable(self).MoveToAttributeByName)(::windows::core::Interface::as_raw(self), pwszlocalname.into(), pwsznamespaceuri.into())
}
pub unsafe fn MoveToElement(&self) -> ::windows::core::Result<()> {
(::windows::core::Interface::vtable(self).MoveToElement)(::windows::core::Interface::as_raw(self)).ok()
Expand All @@ -175,20 +175,20 @@ impl IXmlReader {
(::windows::core::Interface::vtable(self).GetValue)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(ppwszvalue), ::core::mem::transmute(pcwchvalue)).ok()
}
pub unsafe fn ReadValueChunk(&self, pwchbuffer: &mut [u16], pcwchread: *mut u32) -> ::windows::core::HRESULT {
::core::mem::transmute((::windows::core::Interface::vtable(self).ReadValueChunk)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(::windows::core::as_mut_ptr_or_null(pwchbuffer)), pwchbuffer.len() as _, ::core::mem::transmute(pcwchread)))
(::windows::core::Interface::vtable(self).ReadValueChunk)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(::windows::core::as_mut_ptr_or_null(pwchbuffer)), pwchbuffer.len() as _, ::core::mem::transmute(pcwchread))
}
pub unsafe fn GetBaseUri(&self, ppwszbaseuri: *mut ::windows::core::PWSTR, pcwchbaseuri: *mut u32) -> ::windows::core::Result<()> {
(::windows::core::Interface::vtable(self).GetBaseUri)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(ppwszbaseuri), ::core::mem::transmute(pcwchbaseuri)).ok()
}
#[doc = "*Required features: `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub unsafe fn IsDefault(&self) -> super::super::super::Foundation::BOOL {
::core::mem::transmute((::windows::core::Interface::vtable(self).IsDefault)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).IsDefault)(::windows::core::Interface::as_raw(self))
}
#[doc = "*Required features: `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub unsafe fn IsEmptyElement(&self) -> super::super::super::Foundation::BOOL {
::core::mem::transmute((::windows::core::Interface::vtable(self).IsEmptyElement)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).IsEmptyElement)(::windows::core::Interface::as_raw(self))
}
pub unsafe fn GetLineNumber(&self) -> ::windows::core::Result<u32> {
let mut result__ = ::core::mem::MaybeUninit::zeroed();
Expand All @@ -209,7 +209,7 @@ impl IXmlReader {
#[doc = "*Required features: `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub unsafe fn IsEOF(&self) -> super::super::super::Foundation::BOOL {
::core::mem::transmute((::windows::core::Interface::vtable(self).IsEOF)(::windows::core::Interface::as_raw(self)))
(::windows::core::Interface::vtable(self).IsEOF)(::windows::core::Interface::as_raw(self))
}
}
impl ::core::convert::From<IXmlReader> for ::windows::core::IUnknown {
Expand Down
Loading