Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
dlls/windows.media.speech/private.h | 42 +++++++++++++++++++++++++++++
1 file changed, 42 insertions(+)
diff --git a/dlls/windows.media.speech/private.h b/dlls/windows.media.speech/private.h
index b1df726413d..2694b23beab 100644
--- a/dlls/windows.media.speech/private.h
+++ b/dlls/windows.media.speech/private.h
@@ -46,4 +46,46 @@
extern IActivationFactory *synthesizer_factory;
+
+
+#define DEFINE_IINSPECTABLE_( pfx, iface_type, impl_type, impl_from, iface_mem, expr ) \
+ static inline impl_type *impl_from( iface_type *iface ) \
+ { \
+ return CONTAINING_RECORD( iface, impl_type, iface_mem ); \
+ } \
+ static HRESULT WINAPI pfx##_QueryInterface( iface_type *iface, REFIID iid, void **out ) \
+ { \
+ impl_type *impl = impl_from( iface ); \
+ return IInspectable_QueryInterface( (IInspectable *)(expr), iid, out ); \
+ } \
+ static ULONG WINAPI pfx##_AddRef( iface_type *iface ) \
+ { \
+ impl_type *impl = impl_from( iface ); \
+ return IInspectable_AddRef( (IInspectable *)(expr) ); \
+ } \
+ static ULONG WINAPI pfx##_Release( iface_type *iface ) \
+ { \
+ impl_type *impl = impl_from( iface ); \
+ return IInspectable_Release( (IInspectable *)(expr) ); \
+ } \
+ static HRESULT WINAPI pfx##_GetIids( iface_type *iface, ULONG *iid_count, IID **iids ) \
+ { \
+ impl_type *impl = impl_from( iface ); \
+ return IInspectable_GetIids( (IInspectable *)(expr), iid_count, iids ); \
+ } \
+ static HRESULT WINAPI pfx##_GetRuntimeClassName( iface_type *iface, HSTRING *class_name ) \
+ { \
+ impl_type *impl = impl_from( iface ); \
+ return IInspectable_GetRuntimeClassName( (IInspectable *)(expr), class_name ); \
+ } \
+ static HRESULT WINAPI pfx##_GetTrustLevel( iface_type *iface, TrustLevel *trust_level ) \
+ { \
+ impl_type *impl = impl_from( iface ); \
+ return IInspectable_GetTrustLevel( (IInspectable *)(expr), trust_level ); \
+ }
+#define DEFINE_IINSPECTABLE( pfx, iface_type, impl_type, base_iface ) \
+ DEFINE_IINSPECTABLE_( pfx, iface_type, impl_type, impl_from_##iface_type, iface_type##_iface, &impl->base_iface )
+#define DEFINE_IINSPECTABLE_OUTER( pfx, iface_type, impl_type, outer_iface ) \
+ DEFINE_IINSPECTABLE_( pfx, iface_type, impl_type, impl_from_##iface_type, iface_type##_iface, impl->outer_iface )
+
#endif
--
2.35.1