Skip to content
Snippets Groups Projects
Commit 45eb5d09 authored by Rémi Bernon's avatar Rémi Bernon :speech_balloon: Committed by Alexandre Julliard
Browse files

windows.gaming.input: Introduce helpers to define IInspectable interface boilerplate.

parent e53b68ac
No related branches found
No related tags found
No related merge requests found
......@@ -35,11 +35,6 @@ static inline struct controller_statics *impl_from_IActivationFactory( IActivati
return CONTAINING_RECORD( iface, struct controller_statics, IActivationFactory_iface );
}
static inline struct controller_statics *impl_from_IRawGameControllerStatics( IRawGameControllerStatics *iface )
{
return CONTAINING_RECORD( iface, struct controller_statics, IRawGameControllerStatics_iface );
}
static HRESULT WINAPI factory_QueryInterface( IActivationFactory *iface, REFIID iid, void **out )
{
struct controller_statics *impl = impl_from_IActivationFactory( iface );
......@@ -121,41 +116,7 @@ static const struct IActivationFactoryVtbl factory_vtbl =
factory_ActivateInstance,
};
static HRESULT WINAPI statics_QueryInterface( IRawGameControllerStatics *iface, REFIID iid, void **out )
{
struct controller_statics *impl = impl_from_IRawGameControllerStatics( iface );
return IActivationFactory_QueryInterface( &impl->IActivationFactory_iface, iid, out );
}
static ULONG WINAPI statics_AddRef( IRawGameControllerStatics *iface )
{
struct controller_statics *impl = impl_from_IRawGameControllerStatics( iface );
return IActivationFactory_AddRef( &impl->IActivationFactory_iface );
}
static ULONG WINAPI statics_Release( IRawGameControllerStatics *iface )
{
struct controller_statics *impl = impl_from_IRawGameControllerStatics( iface );
return IActivationFactory_Release( &impl->IActivationFactory_iface );
}
static HRESULT WINAPI statics_GetIids( IRawGameControllerStatics *iface, ULONG *iid_count, IID **iids )
{
struct controller_statics *impl = impl_from_IRawGameControllerStatics( iface );
return IActivationFactory_Release( &impl->IActivationFactory_iface );
}
static HRESULT WINAPI statics_GetRuntimeClassName( IRawGameControllerStatics *iface, HSTRING *class_name )
{
struct controller_statics *impl = impl_from_IRawGameControllerStatics( iface );
return IActivationFactory_Release( &impl->IActivationFactory_iface );
}
static HRESULT WINAPI statics_GetTrustLevel( IRawGameControllerStatics *iface, TrustLevel *trust_level )
{
struct controller_statics *impl = impl_from_IRawGameControllerStatics( iface );
return IActivationFactory_Release( &impl->IActivationFactory_iface );
}
DEFINE_IINSPECTABLE( statics, IRawGameControllerStatics, struct controller_statics, IActivationFactory_iface )
static HRESULT WINAPI statics_add_RawGameControllerAdded( IRawGameControllerStatics *iface, IEventHandler_RawGameController *value,
EventRegistrationToken *token )
......
......@@ -35,11 +35,6 @@ static inline struct gamepad_statics *impl_from_IActivationFactory( IActivationF
return CONTAINING_RECORD( iface, struct gamepad_statics, IActivationFactory_iface );
}
static inline struct gamepad_statics *impl_from_IGamepadStatics( IGamepadStatics *iface )
{
return CONTAINING_RECORD( iface, struct gamepad_statics, IGamepadStatics_iface );
}
static HRESULT WINAPI factory_QueryInterface( IActivationFactory *iface, REFIID iid, void **out )
{
struct gamepad_statics *impl = impl_from_IActivationFactory( iface );
......@@ -121,41 +116,7 @@ static const struct IActivationFactoryVtbl factory_vtbl =
factory_ActivateInstance,
};
static HRESULT WINAPI statics_QueryInterface( IGamepadStatics *iface, REFIID iid, void **out )
{
struct gamepad_statics *impl = impl_from_IGamepadStatics( iface );
return IActivationFactory_QueryInterface( &impl->IActivationFactory_iface, iid, out );
}
static ULONG WINAPI statics_AddRef( IGamepadStatics *iface )
{
struct gamepad_statics *impl = impl_from_IGamepadStatics( iface );
return IActivationFactory_AddRef( &impl->IActivationFactory_iface );
}
static ULONG WINAPI statics_Release( IGamepadStatics *iface )
{
struct gamepad_statics *impl = impl_from_IGamepadStatics( iface );
return IActivationFactory_Release( &impl->IActivationFactory_iface );
}
static HRESULT WINAPI statics_GetIids( IGamepadStatics *iface, ULONG *iid_count, IID **iids )
{
struct gamepad_statics *impl = impl_from_IGamepadStatics( iface );
return IActivationFactory_Release( &impl->IActivationFactory_iface );
}
static HRESULT WINAPI statics_GetRuntimeClassName( IGamepadStatics *iface, HSTRING *class_name )
{
struct gamepad_statics *impl = impl_from_IGamepadStatics( iface );
return IActivationFactory_Release( &impl->IActivationFactory_iface );
}
static HRESULT WINAPI statics_GetTrustLevel( IGamepadStatics *iface, TrustLevel *trust_level )
{
struct gamepad_statics *impl = impl_from_IGamepadStatics( iface );
return IActivationFactory_Release( &impl->IActivationFactory_iface );
}
DEFINE_IINSPECTABLE( statics, IGamepadStatics, struct gamepad_statics, IActivationFactory_iface )
static HRESULT WINAPI statics_add_GamepadAdded( IGamepadStatics *iface, IEventHandler_Gamepad *value,
EventRegistrationToken *token )
......
......@@ -38,3 +38,39 @@ extern IActivationFactory *controller_factory;
extern IActivationFactory *gamepad_factory;
extern HRESULT vector_create( REFIID iid, REFIID view_iid, void **out );
#define DEFINE_IINSPECTABLE( pfx, iface_type, impl_type, base_iface ) \
static inline impl_type *impl_from_##iface_type( iface_type *iface ) \
{ \
return CONTAINING_RECORD( iface, impl_type, iface_type##_iface ); \
} \
static HRESULT WINAPI pfx##_QueryInterface( iface_type *iface, REFIID iid, void **out ) \
{ \
impl_type *impl = impl_from_##iface_type( iface ); \
return IInspectable_QueryInterface( (IInspectable *)&impl->base_iface, iid, out ); \
} \
static ULONG WINAPI pfx##_AddRef( iface_type *iface ) \
{ \
impl_type *impl = impl_from_##iface_type( iface ); \
return IInspectable_AddRef( (IInspectable *)&impl->base_iface ); \
} \
static ULONG WINAPI pfx##_Release( iface_type *iface ) \
{ \
impl_type *impl = impl_from_##iface_type( iface ); \
return IInspectable_Release( (IInspectable *)&impl->base_iface ); \
} \
static HRESULT WINAPI pfx##_GetIids( iface_type *iface, ULONG *iid_count, IID **iids ) \
{ \
impl_type *impl = impl_from_##iface_type( iface ); \
return IInspectable_GetIids( (IInspectable *)&impl->base_iface, iid_count, iids ); \
} \
static HRESULT WINAPI pfx##_GetRuntimeClassName( iface_type *iface, HSTRING *class_name ) \
{ \
impl_type *impl = impl_from_##iface_type( iface ); \
return IInspectable_GetRuntimeClassName( (IInspectable *)&impl->base_iface, class_name ); \
} \
static HRESULT WINAPI pfx##_GetTrustLevel( iface_type *iface, TrustLevel *trust_level ) \
{ \
impl_type *impl = impl_from_##iface_type( iface ); \
return IInspectable_GetTrustLevel( (IInspectable *)&impl->base_iface, trust_level ); \
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment