#![feature(prelude_import)] #![no_std] #[prelude_import] use std::prelude::v1::*; #[macro_use] extern crate std; extern crate intercom; use intercom::*; pub trait Foo { fn static_method(a: u16, b: i16); fn simple_method(&self); fn arg_method(&self, a: u16); fn simple_result_method(&self) -> u16; fn com_result_method(&self) -> ComResult; fn rust_result_method(&self) -> Result; fn complete_method(&mut self, a: u16, b: i16) -> ComResult; fn string_method(&self, msg: String) -> String; fn comitf_method(&self, itf: ComItf) -> ComResult>; // Should be VARIANT_BOOL in Automation interface. fn bool_method(&self, input: bool) -> ComResult; fn variant_method(&self, input: Variant) -> ComResult; } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_simple_method_Automation( self_vtable: intercom::raw::RawComPtr, ) -> () where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"simple_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let self_struct = &**self_combox; let __result = self_struct.simple_method(); intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"simple_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_arg_method_Automation( self_vtable: intercom::raw::RawComPtr, a: >::ForeignType, ) -> () where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"arg_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let self_struct = &**self_combox; let __result = self_struct.arg_method(>::from_foreign_parameter(a)); intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"arg_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_simple_result_method_Automation(self_vtable: intercom::raw::RawComPtr) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo{ let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"simple_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let self_struct = &**self_combox; let __result = self_struct.simple_result_method(); intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"simple_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); >::into_foreign_output(__result) } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_com_result_method_Automation( self_vtable: intercom::raw::RawComPtr, __out: *mut >::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"com_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &**self_combox; let __result = self_struct.com_result_method(); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::AutomationTypeSystem, u16, >::wrap(>::into_foreign_output(v1)?); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"com_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"com_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_rust_result_method_Automation( self_vtable: intercom::raw::RawComPtr, __out: *mut >::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"rust_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &**self_combox; let __result = self_struct.rust_result_method(); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::AutomationTypeSystem, u16, >::wrap(>::into_foreign_output(v1)?); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"rust_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"rust_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_complete_method_Automation( self_vtable: intercom::raw::RawComPtr, a: >::ForeignType, b: >::ForeignType, __out: *mut >::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"complete_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &mut **self_combox; let __result = self_struct.complete_method( >::from_foreign_parameter(a)?, >::from_foreign_parameter(b)?, ); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::AutomationTypeSystem, bool, >::wrap(>::into_foreign_output(v1)?); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"complete_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"complete_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_string_method_Automation(self_vtable: intercom::raw::RawComPtr, msg: >::ForeignType) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo{ let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"string_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let self_struct = &**self_combox; let __result = self_struct.string_method(>::from_foreign_parameter(msg)); intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"string_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); >::into_foreign_output(__result) } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_comitf_method_Automation( self_vtable: intercom::raw::RawComPtr, itf: as intercom::type_system::ExternType< intercom::type_system::AutomationTypeSystem, >>::ForeignType, __out: *mut as intercom::type_system::ExternType< intercom::type_system::AutomationTypeSystem, >>::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"comitf_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &**self_combox; let __result = self_struct.comitf_method( as intercom::type_system::ExternInput< intercom::type_system::AutomationTypeSystem, >>::from_foreign_parameter(itf)?); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::AutomationTypeSystem, ComItf, >::wrap( as intercom::type_system::ExternOutput< intercom::type_system::AutomationTypeSystem, >>::into_foreign_output(v1)?, ); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"comitf_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"comitf_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_bool_method_Automation( self_vtable: intercom::raw::RawComPtr, input: >::ForeignType, __out: *mut >::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"bool_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &**self_combox; let __result = self_struct.bool_method(>::from_foreign_parameter(input)?); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::AutomationTypeSystem, bool, >::wrap(>::into_foreign_output(v1)?); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"bool_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"bool_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_variant_method_Automation( self_vtable: intercom::raw::RawComPtr, input: >::ForeignType, __out: *mut >::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"variant_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &**self_combox; let __result = self_struct.variant_method(>::from_foreign_parameter(input)?); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::AutomationTypeSystem, Variant, >::wrap( >::into_foreign_output(v1)?, ); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"variant_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"variant_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_camel_case_types)] #[allow(non_snake_case)] #[allow(clippy::all)] #[repr(C)] #[doc(hidden)] pub struct __FooAutomationVTable { pub __base: >::VTable, pub simple_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr) -> (), pub arg_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, a: >::ForeignType) -> (), pub simple_result_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr) -> >::ForeignType, pub com_result_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, __out: *mut >::ForeignType) -> >::ForeignType, pub rust_result_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, __out: *mut >::ForeignType) -> >::ForeignType, pub complete_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, a: >::ForeignType, b: >::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType, pub string_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, msg: >::ForeignType) -> >::ForeignType, pub comitf_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, itf: as intercom::type_system::ExternType>::ForeignType, __out: *mut as intercom::type_system::ExternType>::ForeignType) -> >::ForeignType, pub bool_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, input: >::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType, pub variant_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, input: >::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType, } #[automatically_derived] #[allow(unused_qualifications)] #[allow(non_camel_case_types)] #[allow(non_snake_case)] #[allow(clippy::all)] impl ::core::clone::Clone for __FooAutomationVTable { #[inline] fn clone(&self) -> __FooAutomationVTable { { let _: ::core::clone::AssertParamIsClone< >::VTable, >; let _: ::core::clone::AssertParamIsClone< unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr) -> (), >; let _: ::core::clone::AssertParamIsClone< unsafe extern "system" fn( self_vtable: intercom::raw::RawComPtr, a: >::ForeignType, ) -> (), >; let _: ::core::clone::AssertParamIsClone< unsafe extern "system" fn( self_vtable: intercom::raw::RawComPtr, ) -> >::ForeignType, >; let _: ::core::clone::AssertParamIsClone>::ForeignType) -> >::ForeignType>; let _: ::core::clone::AssertParamIsClone>::ForeignType) -> >::ForeignType>; let _: ::core::clone::AssertParamIsClone>::ForeignType, b: >::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType>; let _: ::core::clone::AssertParamIsClone< unsafe extern "system" fn( self_vtable: intercom::raw::RawComPtr, msg: >::ForeignType, ) -> >::ForeignType, >; let _: ::core::clone::AssertParamIsClone as intercom::type_system::ExternType>::ForeignType, __out: *mut as intercom::type_system::ExternType>::ForeignType) -> >::ForeignType>; let _: ::core::clone::AssertParamIsClone>::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType>; let _: ::core::clone::AssertParamIsClone>::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType>; *self } } } #[automatically_derived] #[allow(unused_qualifications)] #[allow(non_camel_case_types)] #[allow(non_snake_case)] #[allow(clippy::all)] impl ::core::marker::Copy for __FooAutomationVTable {} #[allow(unused)] impl intercom::attributes::ComInterfaceVTableFor for dyn Foo where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { const VTABLE: __FooAutomationVTable = __FooAutomationVTable { __base: >::VTABLE, simple_method: __Foo_simple_method_Automation::, arg_method: __Foo_arg_method_Automation::, simple_result_method: __Foo_simple_result_method_Automation::, com_result_method: __Foo_com_result_method_Automation::, rust_result_method: __Foo_rust_result_method_Automation::, complete_method: __Foo_complete_method_Automation::, string_method: __Foo_string_method_Automation::, comitf_method: __Foo_comitf_method_Automation::, bool_method: __Foo_bool_method_Automation::, variant_method: __Foo_variant_method_Automation::, }; } #[allow(non_camel_case_types)] #[allow(non_snake_case)] #[allow(clippy::all)] #[doc(hidden)] impl intercom::attributes::ComInterfaceVariant for dyn Foo { type VTable = __FooAutomationVTable; fn iid() -> &'static intercom::IID { &intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8], } } } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_simple_method_Raw(self_vtable: intercom::raw::RawComPtr) -> () where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"simple_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let self_struct = &**self_combox; let __result = self_struct.simple_method(); intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"simple_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_arg_method_Raw( self_vtable: intercom::raw::RawComPtr, a: >::ForeignType, ) -> () where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"arg_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let self_struct = &**self_combox; let __result = self_struct.arg_method(>::from_foreign_parameter(a)); intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"arg_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_simple_result_method_Raw( self_vtable: intercom::raw::RawComPtr, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"simple_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let self_struct = &**self_combox; let __result = self_struct.simple_result_method(); intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"simple_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); >::into_foreign_output(__result) } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_com_result_method_Raw( self_vtable: intercom::raw::RawComPtr, __out: *mut >::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"com_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &**self_combox; let __result = self_struct.com_result_method(); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::RawTypeSystem, u16, >::wrap( >::into_foreign_output(v1)?, ); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"com_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"com_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_rust_result_method_Raw( self_vtable: intercom::raw::RawComPtr, __out: *mut >::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"rust_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &**self_combox; let __result = self_struct.rust_result_method(); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::RawTypeSystem, u16, >::wrap( >::into_foreign_output(v1)?, ); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"rust_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"rust_result_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_complete_method_Raw( self_vtable: intercom::raw::RawComPtr, a: >::ForeignType, b: >::ForeignType, __out: *mut >::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"complete_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &mut **self_combox; let __result = self_struct.complete_method( >::from_foreign_parameter(a)?, >::from_foreign_parameter(b)?, ); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::RawTypeSystem, bool, >::wrap( >::into_foreign_output(v1)?, ); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"complete_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"complete_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_string_method_Raw( self_vtable: intercom::raw::RawComPtr, msg: >::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"string_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let self_struct = &**self_combox; let __result = self_struct.string_method(>::from_foreign_parameter(msg)); intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"string_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); >::into_foreign_output(__result) } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_comitf_method_Raw( self_vtable: intercom::raw::RawComPtr, itf: as intercom::type_system::ExternType< intercom::type_system::RawTypeSystem, >>::ForeignType, __out: *mut as intercom::type_system::ExternType< intercom::type_system::RawTypeSystem, >>::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"comitf_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &**self_combox; let __result = self_struct.comitf_method( as intercom::type_system::ExternInput< intercom::type_system::RawTypeSystem, >>::from_foreign_parameter(itf)?); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::RawTypeSystem, ComItf, >::wrap( as intercom::type_system::ExternOutput< intercom::type_system::RawTypeSystem, >>::into_foreign_output(v1)?, ); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"comitf_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"comitf_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_bool_method_Raw( self_vtable: intercom::raw::RawComPtr, input: >::ForeignType, __out: *mut >::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"bool_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &**self_combox; let __result = self_struct.bool_method(>::from_foreign_parameter(input)?); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::RawTypeSystem, bool, >::wrap( >::into_foreign_output(v1)?, ); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"bool_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"bool_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_snake_case)] #[allow(dead_code)] #[doc(hidden)] unsafe extern "system" fn __Foo_variant_method_Raw( self_vtable: intercom::raw::RawComPtr, input: >::ForeignType, __out: *mut >::ForeignType, ) -> >::ForeignType where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { let offset = >::offset(); let self_combox = (self_vtable as usize - offset) as *mut intercom::ComBoxData; intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"variant_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); let result: Result< >::ForeignType, intercom::ComError, > = (|| { let self_struct = &**self_combox; let __result = self_struct.variant_method(>::from_foreign_parameter(input)?); Ok({ match __result.and_then(|v1| { let ____out_guard = intercom::type_system::OutputGuard::< intercom::type_system::RawTypeSystem, Variant, >::wrap( >::into_foreign_output(v1)?, ); *__out = ____out_guard.consume(); Ok(intercom::raw::S_OK) }) { Ok(s) => s, Err(e) => { *__out = intercom::type_system::ExternDefault::extern_default(); intercom::store_error(e).hresult } } }) })(); match result { Ok(v) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", OK"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"variant_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); v } Err(err) => { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", through ", "] Serving ", "::", ", ERROR"], &match ( &self_combox, &self_vtable, &std::any::type_name::(), &"variant_method", ) { (arg0, arg1, arg2, arg3) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ], }, ), ) }); <>::ForeignType as intercom::ErrorValue>::from_error(intercom::store_error( err, )) } } } #[allow(non_camel_case_types)] #[allow(non_snake_case)] #[allow(clippy::all)] #[repr(C)] #[doc(hidden)] pub struct __FooRawVTable { pub __base: >::VTable, pub simple_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr) -> (), pub arg_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, a: >::ForeignType) -> (), pub simple_result_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr) -> >::ForeignType, pub com_result_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, __out: *mut >::ForeignType) -> >::ForeignType, pub rust_result_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, __out: *mut >::ForeignType) -> >::ForeignType, pub complete_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, a: >::ForeignType, b: >::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType, pub string_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, msg: >::ForeignType) -> >::ForeignType, pub comitf_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, itf: as intercom::type_system::ExternType>::ForeignType, __out: *mut as intercom::type_system::ExternType>::ForeignType) -> >::ForeignType, pub bool_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, input: >::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType, pub variant_method: unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr, input: >::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType, } #[automatically_derived] #[allow(unused_qualifications)] #[allow(non_camel_case_types)] #[allow(non_snake_case)] #[allow(clippy::all)] impl ::core::clone::Clone for __FooRawVTable { #[inline] fn clone(&self) -> __FooRawVTable { { let _: ::core::clone::AssertParamIsClone< >::VTable, >; let _: ::core::clone::AssertParamIsClone< unsafe extern "system" fn(self_vtable: intercom::raw::RawComPtr) -> (), >; let _: ::core::clone::AssertParamIsClone< unsafe extern "system" fn( self_vtable: intercom::raw::RawComPtr, a: >::ForeignType, ) -> (), >; let _: ::core::clone::AssertParamIsClone< unsafe extern "system" fn( self_vtable: intercom::raw::RawComPtr, ) -> >::ForeignType, >; let _: ::core::clone::AssertParamIsClone>::ForeignType) -> >::ForeignType>; let _: ::core::clone::AssertParamIsClone>::ForeignType) -> >::ForeignType>; let _: ::core::clone::AssertParamIsClone>::ForeignType, b: >::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType>; let _: ::core::clone::AssertParamIsClone< unsafe extern "system" fn( self_vtable: intercom::raw::RawComPtr, msg: >::ForeignType, ) -> >::ForeignType, >; let _: ::core::clone::AssertParamIsClone as intercom::type_system::ExternType>::ForeignType, __out: *mut as intercom::type_system::ExternType>::ForeignType) -> >::ForeignType>; let _: ::core::clone::AssertParamIsClone>::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType>; let _: ::core::clone::AssertParamIsClone>::ForeignType, __out: *mut >::ForeignType) -> >::ForeignType>; *self } } } #[automatically_derived] #[allow(unused_qualifications)] #[allow(non_camel_case_types)] #[allow(non_snake_case)] #[allow(clippy::all)] impl ::core::marker::Copy for __FooRawVTable {} #[allow(unused)] impl intercom::attributes::ComInterfaceVTableFor for dyn Foo where I: ?Sized, S: intercom::attributes::ComClassInterface + intercom::attributes::ComClass + Foo, { const VTABLE: __FooRawVTable = __FooRawVTable { __base: >::VTABLE, simple_method: __Foo_simple_method_Raw::, arg_method: __Foo_arg_method_Raw::, simple_result_method: __Foo_simple_result_method_Raw::, com_result_method: __Foo_com_result_method_Raw::, rust_result_method: __Foo_rust_result_method_Raw::, complete_method: __Foo_complete_method_Raw::, string_method: __Foo_string_method_Raw::, comitf_method: __Foo_comitf_method_Raw::, bool_method: __Foo_bool_method_Raw::, variant_method: __Foo_variant_method_Raw::, }; } #[allow(non_camel_case_types)] #[allow(non_snake_case)] #[allow(clippy::all)] #[doc(hidden)] impl intercom::attributes::ComInterfaceVariant for dyn Foo { type VTable = __FooRawVTable; fn iid() -> &'static intercom::IID { &intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8], } } } #[allow(clippy::all)] #[allow(unused_braces)] impl Foo for intercom::ComItf { fn arg_method(&self, a: u16) -> () { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", "] Calling ", "::"], &match (&self, &"Foo", &"arg_method") { (arg0, arg1, arg2) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] use intercom::ErrorValue; if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"arg_method", &"Automation") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] unsafe { let __result = ((**vtbl).arg_method)( comptr.ptr.as_ptr(), >::into_foreign_parameter(a) .0, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8], }; #[allow(unused_braces)] return {}; } } if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"arg_method", &"Raw") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] unsafe { let __result = ((**vtbl).arg_method)( comptr.ptr.as_ptr(), >::into_foreign_parameter(a) .0, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8], }; #[allow(unused_braces)] return {}; } } { ::core::panicking::panic("internal error: entered unreachable code") }; } fn bool_method(&self, input: bool) -> ComResult { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", "] Calling ", "::"], &match (&self, &"Foo", &"bool_method") { (arg0, arg1, arg2) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] use intercom::ErrorValue; if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"bool_method", &"Automation") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result, intercom::ComError> = (|| unsafe { let mut __out: >::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).bool_method)( comptr.ptr.as_ptr(), >::into_foreign_parameter(input)? .0, &mut __out, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = >::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })(); return match __intercom_result { Ok(v) => v, Err(err) => as intercom::ErrorValue>::from_error(err), }; } if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"bool_method", &"Raw") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result, intercom::ComError> = (|| unsafe { let mut __out: >::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).bool_method)( comptr.ptr.as_ptr(), >::into_foreign_parameter(input)? .0, &mut __out, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = >::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })(); return match __intercom_result { Ok(v) => v, Err(err) => as intercom::ErrorValue>::from_error(err), }; } { ::core::panicking::panic("internal error: entered unreachable code") }; } fn com_result_method(&self) -> ComResult { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", "] Calling ", "::"], &match (&self, &"Foo", &"com_result_method") { (arg0, arg1, arg2) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] use intercom::ErrorValue; if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match ( &self, &comptr.ptr, &"Foo", &"com_result_method", &"Automation", ) { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result, intercom::ComError> = (|| unsafe { let mut __out: >::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).com_result_method)(comptr.ptr.as_ptr(), &mut __out); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = >::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })(); return match __intercom_result { Ok(v) => v, Err(err) => as intercom::ErrorValue>::from_error(err), }; } if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"com_result_method", &"Raw") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result, intercom::ComError> = (|| unsafe { let mut __out: >::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).com_result_method)(comptr.ptr.as_ptr(), &mut __out); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = >::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })(); return match __intercom_result { Ok(v) => v, Err(err) => as intercom::ErrorValue>::from_error(err), }; } { ::core::panicking::panic("internal error: entered unreachable code") }; } fn comitf_method(&self, itf: ComItf) -> ComResult> { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", "] Calling ", "::"], &match (&self, &"Foo", &"comitf_method") { (arg0, arg1, arg2) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] use intercom::ErrorValue; if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"comitf_method", &"Automation") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result< ComResult>, intercom::ComError, > = (|| unsafe { let mut __out: as intercom::type_system::ExternType< intercom::type_system::AutomationTypeSystem, >>::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).comitf_method)( comptr.ptr.as_ptr(), as intercom::type_system::ExternInput< intercom::type_system::AutomationTypeSystem, >>::into_foreign_parameter(itf)? .0, &mut __out, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = as intercom::type_system::ExternOutput< intercom::type_system::AutomationTypeSystem, >>::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })(); return match __intercom_result { Ok(v) => v, Err(err) => { > as intercom::ErrorValue>::from_error(err) } }; } if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"comitf_method", &"Raw") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result< ComResult>, intercom::ComError, > = (|| unsafe { let mut __out: as intercom::type_system::ExternType< intercom::type_system::RawTypeSystem, >>::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).comitf_method)( comptr.ptr.as_ptr(), as intercom::type_system::ExternInput< intercom::type_system::RawTypeSystem, >>::into_foreign_parameter(itf)? .0, &mut __out, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = as intercom::type_system::ExternOutput< intercom::type_system::RawTypeSystem, >>::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })(); return match __intercom_result { Ok(v) => v, Err(err) => { > as intercom::ErrorValue>::from_error(err) } }; } { ::core::panicking::panic("internal error: entered unreachable code") }; } fn complete_method(&mut self, a: u16, b: i16) -> ComResult { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", "] Calling ", "::"], &match (&self, &"Foo", &"complete_method") { (arg0, arg1, arg2) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] use intercom::ErrorValue; if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match ( &self, &comptr.ptr, &"Foo", &"complete_method", &"Automation", ) { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result, intercom::ComError> = (|| unsafe { let mut __out: >::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).complete_method)( comptr.ptr.as_ptr(), >::into_foreign_parameter(a)? .0, >::into_foreign_parameter(b)? .0, &mut __out, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = >::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })(); return match __intercom_result { Ok(v) => v, Err(err) => as intercom::ErrorValue>::from_error(err), }; } if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"complete_method", &"Raw") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result, intercom::ComError> = (|| unsafe { let mut __out: >::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).complete_method)( comptr.ptr.as_ptr(), >::into_foreign_parameter(a)? .0, >::into_foreign_parameter(b)? .0, &mut __out, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = >::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })(); return match __intercom_result { Ok(v) => v, Err(err) => as intercom::ErrorValue>::from_error(err), }; } { ::core::panicking::panic("internal error: entered unreachable code") }; } fn rust_result_method(&self) -> Result { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", "] Calling ", "::"], &match (&self, &"Foo", &"rust_result_method") { (arg0, arg1, arg2) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] use intercom::ErrorValue; if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match ( &self, &comptr.ptr, &"Foo", &"rust_result_method", &"Automation", ) { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result, intercom::ComError> = (|| unsafe { let mut __out: >::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).rust_result_method)(comptr.ptr.as_ptr(), &mut __out); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = >::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })(); return match __intercom_result { Ok(v) => v, Err(err) => as intercom::ErrorValue>::from_error(err), }; } if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"rust_result_method", &"Raw") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result, intercom::ComError> = (|| unsafe { let mut __out: >::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).rust_result_method)(comptr.ptr.as_ptr(), &mut __out); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = >::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })(); return match __intercom_result { Ok(v) => v, Err(err) => as intercom::ErrorValue>::from_error(err), }; } { ::core::panicking::panic("internal error: entered unreachable code") }; } fn simple_method(&self) -> () { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", "] Calling ", "::"], &match (&self, &"Foo", &"simple_method") { (arg0, arg1, arg2) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] use intercom::ErrorValue; if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"simple_method", &"Automation") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] unsafe { let __result = ((**vtbl).simple_method)(comptr.ptr.as_ptr()); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8], }; #[allow(unused_braces)] return {}; } } if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"simple_method", &"Raw") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] unsafe { let __result = ((**vtbl).simple_method)(comptr.ptr.as_ptr()); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8], }; #[allow(unused_braces)] return {}; } } { ::core::panicking::panic("internal error: entered unreachable code") }; } fn simple_result_method(&self) -> u16 { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", "] Calling ", "::"], &match (&self, &"Foo", &"simple_result_method") { (arg0, arg1, arg2) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] use intercom::ErrorValue; if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match ( &self, &comptr.ptr, &"Foo", &"simple_result_method", &"Automation", ) { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] unsafe { let __result = ((**vtbl).simple_result_method)(comptr.ptr.as_ptr()); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8], }; #[allow(unused_braces)] return { >::from_foreign_output(__result) }; } } if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"simple_result_method", &"Raw") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] unsafe { let __result = ((**vtbl).simple_result_method)(comptr.ptr.as_ptr()); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8], }; #[allow(unused_braces)] return { >::from_foreign_output(__result) }; } } { ::core::panicking::panic("internal error: entered unreachable code") }; } fn string_method(&self, msg: String) -> String { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", "] Calling ", "::"], &match (&self, &"Foo", &"string_method") { (arg0, arg1, arg2) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] use intercom::ErrorValue; if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"string_method", &"Automation") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] unsafe { let __result = ((**vtbl).string_method)( comptr.ptr.as_ptr(), >::into_foreign_parameter(msg) .0, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8], }; #[allow(unused_braces)] return { >::from_foreign_output(__result) }; } } if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"string_method", &"Raw") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] unsafe { let __result = ((**vtbl).string_method)( comptr.ptr.as_ptr(), >::into_foreign_parameter(msg) .0, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8], }; #[allow(unused_braces)] return { >::from_foreign_output(__result) }; } } { ::core::panicking::panic("internal error: entered unreachable code") }; } fn variant_method(&self, input: Variant) -> ComResult { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", "] Calling ", "::"], &match (&self, &"Foo", &"variant_method") { (arg0, arg1, arg2) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] use intercom::ErrorValue; if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"variant_method", &"Automation") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result, intercom::ComError> = (|| unsafe { let mut __out: >::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).variant_method)( comptr.ptr.as_ptr(), >::into_foreign_parameter(input)? .0, &mut __out, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = >::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })( ); return match __intercom_result { Ok(v) => v, Err(err) => as intercom::ErrorValue>::from_error(err), }; } if let Some(comptr) = intercom::ComItf::ptr::(self) { intercom::logging::trace(|l| { l( "testcrate", ::core::fmt::Arguments::new_v1( &["[", ", with ", "] Calling ", "::", ", type system: "], &match (&self, &comptr.ptr, &"Foo", &"variant_method", &"Raw") { (arg0, arg1, arg2, arg3, arg4) => [ ::core::fmt::ArgumentV1::new(arg0, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg1, ::core::fmt::Pointer::fmt), ::core::fmt::ArgumentV1::new(arg2, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg3, ::core::fmt::Display::fmt), ::core::fmt::ArgumentV1::new(arg4, ::core::fmt::Display::fmt), ], }, ), ) }); #[allow(unused_imports)] let vtbl = comptr.ptr.as_ptr() as *const *const >::VTable; #[allow(unused_unsafe)] let __intercom_result: Result, intercom::ComError> = (|| unsafe { let mut __out: >::ForeignType = intercom::type_system::ExternDefault::extern_default(); let __result = ((**vtbl).variant_method)( comptr.ptr.as_ptr(), >::into_foreign_parameter(input)? .0, &mut __out, ); let __intercom_iid = intercom::GUID { data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8], }; #[allow(unused_braces)] Ok({ if __result == intercom::raw::S_OK || __result == intercom::raw::S_FALSE { let ____out_guard = >::from_foreign_output(__out); Ok(____out_guard?) } else { return Err(intercom::load_error(self, &__intercom_iid, __result)); } }) })( ); return match __intercom_result { Ok(v) => v, Err(err) => as intercom::ErrorValue>::from_error(err), }; } { ::core::panicking::panic("internal error: entered unreachable code") }; } } impl intercom::attributes::ComInterface for dyn Foo { type TSelf = dyn Foo; #[doc = "Returns the IID of the requested interface."] fn iid_ts() -> &'static intercom::IID where Self: intercom::attributes::ComInterfaceVariant, { >::iid() } fn iid(ts: intercom::type_system::TypeSystemName) -> Option<&'static intercom::IID> { match ts { intercom::type_system::TypeSystemName::Automation => { Some(>::iid()) } intercom::type_system::TypeSystemName::Raw => { Some(>::iid()) } } } fn deref(com_itf: &intercom::ComItf) -> &(dyn Foo + 'static) { com_itf } } impl intercom::type_system::ForeignType for dyn Foo { #[doc = r" The name of the type."] fn type_name() -> &'static str { "Foo" } } #[allow(non_snake_case)] #[allow(dead_code)] impl intercom::attributes::ComInterfaceTypeInfo for dyn Foo { fn gather_type_info() -> Vec { let variants = <[_]>::into_vec(box [intercom::ComBox::new(intercom::typelib::InterfaceVariant{ts: intercom::type_system::TypeSystemName::Automation, iid: intercom::GUID{data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8],}, methods: <[_]>::into_vec(box [intercom::ComBox::new(intercom::typelib::Method{name: "simple_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: "void".into(), indirection_level: 0, direction: intercom::typelib::Direction::Return,}, parameters: ::alloc::vec::Vec::new(),}), intercom::ComBox::new(intercom::typelib::Method{name: "arg_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: "void".into(), indirection_level: 0, direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "a".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "simple_result_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: ::alloc::vec::Vec::new(),}), intercom::ComBox::new(intercom::typelib::Method{name: "com_result_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "__out".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "rust_result_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "__out".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "complete_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "a".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}, intercom::typelib::Arg{name: "b".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}, intercom::typelib::Arg{name: "__out".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "string_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "msg".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "comitf_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "itf".into(), ty: < as intercom::type_system::ExternType>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: < as intercom::type_system::ExternType>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}, intercom::typelib::Arg{name: "__out".into(), ty: < as intercom::type_system::ExternType>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: < as intercom::type_system::ExternType>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "bool_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "input".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}, intercom::typelib::Arg{name: "__out".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "variant_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "input".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}, intercom::typelib::Arg{name: "__out".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),})]),}), intercom::ComBox::new(intercom::typelib::InterfaceVariant{ts: intercom::type_system::TypeSystemName::Raw, iid: intercom::GUID{data1: 0u32, data2: 0u16, data3: 0u16, data4: [0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 0u8, 1u8],}, methods: <[_]>::into_vec(box [intercom::ComBox::new(intercom::typelib::Method{name: "simple_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: "void".into(), indirection_level: 0, direction: intercom::typelib::Direction::Return,}, parameters: ::alloc::vec::Vec::new(),}), intercom::ComBox::new(intercom::typelib::Method{name: "arg_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: "void".into(), indirection_level: 0, direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "a".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "simple_result_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: ::alloc::vec::Vec::new(),}), intercom::ComBox::new(intercom::typelib::Method{name: "com_result_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "__out".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "rust_result_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "__out".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "complete_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "a".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}, intercom::typelib::Arg{name: "b".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}, intercom::typelib::Arg{name: "__out".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "string_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "msg".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "comitf_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "itf".into(), ty: < as intercom::type_system::ExternType>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: < as intercom::type_system::ExternType>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}, intercom::typelib::Arg{name: "__out".into(), ty: < as intercom::type_system::ExternType>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: < as intercom::type_system::ExternType>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "bool_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "input".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}, intercom::typelib::Arg{name: "__out".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),}), intercom::ComBox::new(intercom::typelib::Method{name: "variant_method".into(), return_type: intercom::typelib::Arg{name: "".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Return,}, parameters: <[_]>::into_vec(box [intercom::typelib::Arg{name: "input".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::In,}, intercom::typelib::Arg{name: "__out".into(), ty: <>::ForeignType as intercom::type_system::ForeignType>::type_name().into(), indirection_level: <>::ForeignType as intercom::type_system::ForeignType>::indirection_level(), direction: intercom::typelib::Direction::Retval,}]),})]),})]); <[_]>::into_vec(box [intercom::typelib::TypeInfo::Interface( intercom::ComBox::new(intercom::typelib::Interface { name: "Foo".into(), variants, options: intercom::typelib::InterfaceOptions { class_impl_interface: false, ..Default::default() }, }), )]) } }