The idea I have is to use this module to declare class stubs until there is a good reason to split them to dedicated modules. WinRT modules aren't usually loaded directly, and instead the registry is queried to figure which module to load for which class.
This would help avoiding unnecessary proliferation of stub WinRT modules, while at the same time allowing to factor WinRT foundation code (such as vector / async, etc...) between the modules that seem to deserve to be implemented separately.
The relevant classes could then be split out to dedicated modules on a as-needed basis, when they get fleshed out.
-- v2: winewinrt: Move Vector<HSTRING> from windows.media.speech. windows.media.speech: Use Vector<IInspectable> from winewinrt. winewinrt: Rename Vector<IInspectable> structs and methods. winewinrt: Move Vector<IInspectable> from windows.gaming.input. winewinrt: Introduce new WinRT common module.
From: Rémi Bernon rbernon@codeweavers.com
--- MAINTAINERS | 4 +++ configure.ac | 1 + dlls/winewinrt/Makefile.in | 5 ++++ dlls/winewinrt/main.c | 39 ++++++++++++++++++++++++++++++ dlls/winewinrt/winewinrt.spec | 3 +++ dlls/winewinrt/winewinrt_private.h | 29 ++++++++++++++++++++++ 6 files changed, 81 insertions(+) create mode 100644 dlls/winewinrt/Makefile.in create mode 100644 dlls/winewinrt/main.c create mode 100644 dlls/winewinrt/winewinrt.spec create mode 100644 dlls/winewinrt/winewinrt_private.h
diff --git a/MAINTAINERS b/MAINTAINERS index 22351f5af60..1257db65d9b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -383,6 +383,10 @@ M: Alexandre Julliard julliard@winehq.org P: Erich E. Hoover erich.e.hoover@wine-staging.com F: server/
+Wine WinRT +M: Rémi Bernon rbernon@codeweavers.com +F: dlls/winewinrt/ + Winemaker M: André Zwing nerv@dawncrow.de F: tools/winemaker/ diff --git a/configure.ac b/configure.ac index 16bada50512..fa2fdde3039 100644 --- a/configure.ac +++ b/configure.ac @@ -3163,6 +3163,7 @@ WINE_CONFIG_MAKEFILE(dlls/wineps16.drv16,enable_win16) WINE_CONFIG_MAKEFILE(dlls/winepulse.drv) WINE_CONFIG_MAKEFILE(dlls/wineusb.sys) WINE_CONFIG_MAKEFILE(dlls/winevulkan) +WINE_CONFIG_MAKEFILE(dlls/winewinrt) WINE_CONFIG_MAKEFILE(dlls/winex11.drv) WINE_CONFIG_MAKEFILE(dlls/winexinput.sys) WINE_CONFIG_MAKEFILE(dlls/wing.dll16,enable_win16) diff --git a/dlls/winewinrt/Makefile.in b/dlls/winewinrt/Makefile.in new file mode 100644 index 00000000000..d76556fd157 --- /dev/null +++ b/dlls/winewinrt/Makefile.in @@ -0,0 +1,5 @@ +MODULE = winewinrt.dll +IMPORTS = combase uuid + +C_SRCS = \ + main.c diff --git a/dlls/winewinrt/main.c b/dlls/winewinrt/main.c new file mode 100644 index 00000000000..e3dbba3a500 --- /dev/null +++ b/dlls/winewinrt/main.c @@ -0,0 +1,39 @@ +/* WinRT Wine implementation + * + * Copyright 2021 Rémi Bernon for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "initguid.h" +#include "winewinrt_private.h" + +WINE_DEFAULT_DEBUG_CHANNEL(winrt); + +HRESULT WINAPI DllGetClassObject( REFCLSID clsid, REFIID riid, void **out ) +{ + FIXME( "clsid %s, riid %s, out %p stub!\n", debugstr_guid( clsid ), debugstr_guid( riid ), out ); + return CLASS_E_CLASSNOTAVAILABLE; +} + +HRESULT WINAPI DllGetActivationFactory( HSTRING class_str, IActivationFactory **factory ) +{ + const WCHAR *buffer = WindowsGetStringRawBuffer( class_str, NULL ); + + FIXME( "class %s, factory %p stub!\n", debugstr_w(buffer), factory ); + + *factory = NULL; + return CLASS_E_CLASSNOTAVAILABLE; +} diff --git a/dlls/winewinrt/winewinrt.spec b/dlls/winewinrt/winewinrt.spec new file mode 100644 index 00000000000..20a8bfa98ea --- /dev/null +++ b/dlls/winewinrt/winewinrt.spec @@ -0,0 +1,3 @@ +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetActivationFactory(ptr ptr) +@ stdcall -private DllGetClassObject(ptr ptr ptr) diff --git a/dlls/winewinrt/winewinrt_private.h b/dlls/winewinrt/winewinrt_private.h new file mode 100644 index 00000000000..19d7ed67e69 --- /dev/null +++ b/dlls/winewinrt/winewinrt_private.h @@ -0,0 +1,29 @@ +/* WinRT implementation + * + * Copyright 2022 Rémi Bernon for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <stdarg.h> +#include <stddef.h> + +#define COBJMACROS +#include "windef.h" +#include "winbase.h" +#include "winstring.h" +#include "activation.h" + +#include "wine/debug.h"
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/windows.gaming.input/Makefile.in | 3 +- dlls/windows.gaming.input/controller.c | 4 +- dlls/windows.gaming.input/gamepad.c | 2 +- dlls/windows.gaming.input/private.h | 63 +------------------ dlls/windows.gaming.input/racing_wheel.c | 2 +- dlls/winewinrt/Makefile.in | 3 +- .../vector_inspectable.c} | 28 +++++---- dlls/winewinrt/winewinrt_private.h | 57 +++++++++++++++++ 8 files changed, 83 insertions(+), 79 deletions(-) rename dlls/{windows.gaming.input/vector.c => winewinrt/vector_inspectable.c} (96%)
diff --git a/dlls/windows.gaming.input/Makefile.in b/dlls/windows.gaming.input/Makefile.in index 3ec3dd0d864..2c9b935564a 100644 --- a/dlls/windows.gaming.input/Makefile.in +++ b/dlls/windows.gaming.input/Makefile.in @@ -1,5 +1,6 @@ MODULE = windows.gaming.input.dll IMPORTS = combase uuid user32 dinput8 setupapi hid +PARENTSRC = ../winewinrt
C_SRCS = \ async.c \ @@ -15,7 +16,7 @@ C_SRCS = \ provider.c \ racing_wheel.c \ ramp_effect.c \ - vector.c + vector_inspectable.c
IDL_SRCS = \ classes.idl \ diff --git a/dlls/windows.gaming.input/controller.c b/dlls/windows.gaming.input/controller.c index bd3d441c445..86e4d3bd030 100644 --- a/dlls/windows.gaming.input/controller.c +++ b/dlls/windows.gaming.input/controller.c @@ -50,7 +50,7 @@ static HRESULT init_controllers(void)
EnterCriticalSection( &controller_cs ); if (controllers) hr = S_OK; - else hr = vector_create( &iids, (void **)&controllers ); + else hr = vector_inspectable_create( &iids, (void **)&controllers ); LeaveCriticalSection( &controller_cs );
return hr; @@ -243,7 +243,7 @@ static HRESULT WINAPI raw_controller_get_ForceFeedbackMotors( IRawGameController
TRACE( "iface %p, value %p\n", iface, value );
- if (FAILED(hr = vector_create( &iids, (void **)&vector ))) return hr; + if (FAILED(hr = vector_inspectable_create( &iids, (void **)&vector ))) return hr;
if (SUCCEEDED(IWineGameControllerProvider_get_ForceFeedbackMotor( impl->wine_provider, &motor )) && motor) { diff --git a/dlls/windows.gaming.input/gamepad.c b/dlls/windows.gaming.input/gamepad.c index 112ec49a1d3..389659311ed 100644 --- a/dlls/windows.gaming.input/gamepad.c +++ b/dlls/windows.gaming.input/gamepad.c @@ -50,7 +50,7 @@ static HRESULT init_gamepads(void)
EnterCriticalSection( &gamepad_cs ); if (gamepads) hr = S_OK; - else hr = vector_create( &iids, (void **)&gamepads ); + else hr = vector_inspectable_create( &iids, (void **)&gamepads ); LeaveCriticalSection( &gamepad_cs );
return hr; diff --git a/dlls/windows.gaming.input/private.h b/dlls/windows.gaming.input/private.h index f53d5b5bc37..d41eda53c36 100644 --- a/dlls/windows.gaming.input/private.h +++ b/dlls/windows.gaming.input/private.h @@ -17,22 +17,10 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include <stdarg.h> -#include <stddef.h> +#include "winewinrt_private.h"
-#define COBJMACROS -#include "windef.h" -#include "winbase.h" -#include "winstring.h" -#include "objbase.h" #include "dinput.h"
-#include "activation.h" - -#define WIDL_using_Windows_Foundation -#define WIDL_using_Windows_Foundation_Collections -#define WIDL_using_Windows_Foundation_Numerics -#include "windows.foundation.h" #define WIDL_using_Windows_Devices_Power #define WIDL_using_Windows_Gaming_Input #define WIDL_using_Windows_Gaming_Input_Custom @@ -54,15 +42,6 @@ extern IInspectable *ramp_effect_factory; extern IInspectable *periodic_effect_factory; extern IInspectable *condition_effect_factory;
-struct vector_iids -{ - const GUID *vector; - const GUID *view; - const GUID *iterable; - const GUID *iterator; -}; -extern HRESULT vector_create( const struct vector_iids *iids, void **out ); - extern void provider_create( const WCHAR *device_path ); extern void provider_remove( const WCHAR *device_path );
@@ -82,46 +61,6 @@ extern HRESULT async_operation_boolean_create( IUnknown *invoker, IUnknown *para extern HRESULT async_operation_effect_result_create( IUnknown *invoker, IUnknown *param, async_operation_callback callback, IAsyncOperation_ForceFeedbackLoadEffectResult **out );
-#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 ) - static inline const char *debugstr_vector3( const Vector3 *vector ) { if (!vector) return "(null)"; diff --git a/dlls/windows.gaming.input/racing_wheel.c b/dlls/windows.gaming.input/racing_wheel.c index d646ca26c03..5f186fa9e9f 100644 --- a/dlls/windows.gaming.input/racing_wheel.c +++ b/dlls/windows.gaming.input/racing_wheel.c @@ -50,7 +50,7 @@ static HRESULT init_racing_wheels(void)
EnterCriticalSection( &racing_wheel_cs ); if (racing_wheels) hr = S_OK; - else hr = vector_create( &iids, (void **)&racing_wheels ); + else hr = vector_inspectable_create( &iids, (void **)&racing_wheels ); LeaveCriticalSection( &racing_wheel_cs );
return hr; diff --git a/dlls/winewinrt/Makefile.in b/dlls/winewinrt/Makefile.in index d76556fd157..812db0a6227 100644 --- a/dlls/winewinrt/Makefile.in +++ b/dlls/winewinrt/Makefile.in @@ -2,4 +2,5 @@ MODULE = winewinrt.dll IMPORTS = combase uuid
C_SRCS = \ - main.c + main.c \ + vector_inspectable.c diff --git a/dlls/windows.gaming.input/vector.c b/dlls/winewinrt/vector_inspectable.c similarity index 96% rename from dlls/windows.gaming.input/vector.c rename to dlls/winewinrt/vector_inspectable.c index 8958b07c0f2..5b6fecb2804 100644 --- a/dlls/windows.gaming.input/vector.c +++ b/dlls/winewinrt/vector_inspectable.c @@ -1,4 +1,4 @@ -/* WinRT Windows.Gaming.Input implementation +/* WinRT Vector<IInspectable> implementation * * Copyright 2021 Rémi Bernon for CodeWeavers * @@ -17,11 +17,9 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include "private.h" +#include "winewinrt_private.h"
-#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(combase); +WINE_DEFAULT_DEBUG_CHANNEL(winrt);
struct iterator { @@ -129,7 +127,7 @@ static HRESULT WINAPI iterator_MoveNext( IIterator_IInspectable *iface, BOOL *va }
static HRESULT WINAPI iterator_GetMany( IIterator_IInspectable *iface, UINT32 items_size, - IInspectable **items, UINT *count ) + IInspectable **items, UINT32 *count ) { struct iterator *impl = impl_from_IIterator_IInspectable( iface ); TRACE( "iface %p, items_size %u, items %p, count %p.\n", iface, items_size, items, count ); @@ -138,6 +136,7 @@ static HRESULT WINAPI iterator_GetMany( IIterator_IInspectable *iface, UINT32 it
static const IIterator_IInspectableVtbl iterator_vtbl = { + /* IUnknown methods */ iterator_QueryInterface, iterator_AddRef, iterator_Release, @@ -160,9 +159,11 @@ struct vector_view LONG ref;
UINT32 size; - IInspectable *elements[1]; + IInspectable *elements[]; };
+C_ASSERT( sizeof(struct vector_view) == offsetof( struct vector_view, elements[0] ) ); + static inline struct vector_view *impl_from_IVectorView_IInspectable( IVectorView_IInspectable *iface ) { return CONTAINING_RECORD( iface, struct vector_view, IVectorView_IInspectable_iface ); @@ -275,7 +276,7 @@ static HRESULT WINAPI vector_view_IndexOf( IVectorView_IInspectable *iface, IIns }
static HRESULT WINAPI vector_view_GetMany( IVectorView_IInspectable *iface, UINT32 start_index, - UINT32 items_size, IInspectable **items, UINT *count ) + UINT32 items_size, IInspectable **items, UINT32 *count ) { struct vector_view *impl = impl_from_IVectorView_IInspectable( iface ); UINT32 i; @@ -297,6 +298,7 @@ static HRESULT WINAPI vector_view_GetMany( IVectorView_IInspectable *iface, UINT
static const struct IVectorView_IInspectableVtbl vector_view_vtbl = { + /* IUnknown methods */ vector_view_QueryInterface, vector_view_AddRef, vector_view_Release, @@ -335,6 +337,7 @@ static HRESULT WINAPI iterable_view_First( IIterable_IInspectable *iface, IItera
static const struct IIterable_IInspectableVtbl iterable_view_vtbl = { + /* IUnknown methods */ iterable_view_QueryInterface, iterable_view_AddRef, iterable_view_Release, @@ -472,7 +475,8 @@ static HRESULT WINAPI vector_GetView( IVector_IInspectable *iface, IVectorView_I return S_OK; }
-static HRESULT WINAPI vector_IndexOf( IVector_IInspectable *iface, IInspectable *element, UINT32 *index, BOOLEAN *found ) +static HRESULT WINAPI vector_IndexOf( IVector_IInspectable *iface, IInspectable *element, + UINT32 *index, BOOLEAN *found ) { struct vector *impl = impl_from_IVector_IInspectable( iface ); ULONG i; @@ -566,7 +570,7 @@ static HRESULT WINAPI vector_Clear( IVector_IInspectable *iface ) }
static HRESULT WINAPI vector_GetMany( IVector_IInspectable *iface, UINT32 start_index, - UINT32 items_size, IInspectable **items, UINT *count ) + UINT32 items_size, IInspectable **items, UINT32 *count ) { struct vector *impl = impl_from_IVector_IInspectable( iface ); UINT32 i; @@ -600,6 +604,7 @@ static HRESULT WINAPI vector_ReplaceAll( IVector_IInspectable *iface, UINT32 cou
static const struct IVector_IInspectableVtbl vector_vtbl = { + /* IUnknown methods */ vector_QueryInterface, vector_AddRef, vector_Release, @@ -646,6 +651,7 @@ static HRESULT WINAPI iterable_First( IIterable_IInspectable *iface, IIterator_I
static const struct IIterable_IInspectableVtbl iterable_vtbl = { + /* IUnknown methods */ iterable_QueryInterface, iterable_AddRef, iterable_Release, @@ -657,7 +663,7 @@ static const struct IIterable_IInspectableVtbl iterable_vtbl = iterable_First, };
-HRESULT vector_create( const struct vector_iids *iids, void **out ) +HRESULT vector_inspectable_create( const struct vector_iids *iids, void **out ) { struct vector *impl;
diff --git a/dlls/winewinrt/winewinrt_private.h b/dlls/winewinrt/winewinrt_private.h index 19d7ed67e69..9f478f077d0 100644 --- a/dlls/winewinrt/winewinrt_private.h +++ b/dlls/winewinrt/winewinrt_private.h @@ -26,4 +26,61 @@ #include "winstring.h" #include "activation.h"
+#define WIDL_using_Windows_Foundation +#define WIDL_using_Windows_Foundation_Collections +#define WIDL_using_Windows_Foundation_Numerics +#include "windows.foundation.h" + #include "wine/debug.h" + +/* vector_inspectable.c */ + +struct vector_iids +{ + const GUID *vector; + const GUID *view; + const GUID *iterable; + const GUID *iterator; +}; + +extern HRESULT vector_inspectable_create( const struct vector_iids *iids, void **out ); + +#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 )
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winewinrt/vector_inspectable.c | 304 ++++++++++++++-------------- 1 file changed, 152 insertions(+), 152 deletions(-)
diff --git a/dlls/winewinrt/vector_inspectable.c b/dlls/winewinrt/vector_inspectable.c index 5b6fecb2804..4ae1c0b950d 100644 --- a/dlls/winewinrt/vector_inspectable.c +++ b/dlls/winewinrt/vector_inspectable.c @@ -21,7 +21,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(winrt);
-struct iterator +struct iterator_inspectable { IIterator_IInspectable IIterator_IInspectable_iface; const GUID *iid; @@ -32,14 +32,14 @@ struct iterator UINT32 size; };
-static inline struct iterator *impl_from_IIterator_IInspectable( IIterator_IInspectable *iface ) +static inline struct iterator_inspectable *impl_from_IIterator_IInspectable( IIterator_IInspectable *iface ) { - return CONTAINING_RECORD( iface, struct iterator, IIterator_IInspectable_iface ); + return CONTAINING_RECORD( iface, struct iterator_inspectable, IIterator_IInspectable_iface ); }
-static HRESULT WINAPI iterator_QueryInterface( IIterator_IInspectable *iface, REFIID iid, void **out ) +static HRESULT WINAPI iterator_inspectable_QueryInterface( IIterator_IInspectable *iface, REFIID iid, void **out ) { - struct iterator *impl = impl_from_IIterator_IInspectable( iface ); + struct iterator_inspectable *impl = impl_from_IIterator_IInspectable( iface );
TRACE( "iface %p, iid %s, out %p.\n", iface, debugstr_guid( iid ), out );
@@ -57,17 +57,17 @@ static HRESULT WINAPI iterator_QueryInterface( IIterator_IInspectable *iface, RE return E_NOINTERFACE; }
-static ULONG WINAPI iterator_AddRef( IIterator_IInspectable *iface ) +static ULONG WINAPI iterator_inspectable_AddRef( IIterator_IInspectable *iface ) { - struct iterator *impl = impl_from_IIterator_IInspectable( iface ); + struct iterator_inspectable *impl = impl_from_IIterator_IInspectable( iface ); ULONG ref = InterlockedIncrement( &impl->ref ); TRACE( "iface %p increasing refcount to %lu.\n", iface, ref ); return ref; }
-static ULONG WINAPI iterator_Release( IIterator_IInspectable *iface ) +static ULONG WINAPI iterator_inspectable_Release( IIterator_IInspectable *iface ) { - struct iterator *impl = impl_from_IIterator_IInspectable( iface ); + struct iterator_inspectable *impl = impl_from_IIterator_IInspectable( iface ); ULONG ref = InterlockedDecrement( &impl->ref );
TRACE( "iface %p decreasing refcount to %lu.\n", iface, ref ); @@ -81,34 +81,34 @@ static ULONG WINAPI iterator_Release( IIterator_IInspectable *iface ) return ref; }
-static HRESULT WINAPI iterator_GetIids( IIterator_IInspectable *iface, ULONG *iid_count, IID **iids ) +static HRESULT WINAPI iterator_inspectable_GetIids( IIterator_IInspectable *iface, ULONG *iid_count, IID **iids ) { FIXME( "iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids ); return E_NOTIMPL; }
-static HRESULT WINAPI iterator_GetRuntimeClassName( IIterator_IInspectable *iface, HSTRING *class_name ) +static HRESULT WINAPI iterator_inspectable_GetRuntimeClassName( IIterator_IInspectable *iface, HSTRING *class_name ) { FIXME( "iface %p, class_name %p stub!\n", iface, class_name ); return E_NOTIMPL; }
-static HRESULT WINAPI iterator_GetTrustLevel( IIterator_IInspectable *iface, TrustLevel *trust_level ) +static HRESULT WINAPI iterator_inspectable_GetTrustLevel( IIterator_IInspectable *iface, TrustLevel *trust_level ) { FIXME( "iface %p, trust_level %p stub!\n", iface, trust_level ); return E_NOTIMPL; }
-static HRESULT WINAPI iterator_get_Current( IIterator_IInspectable *iface, IInspectable **value ) +static HRESULT WINAPI iterator_inspectable_get_Current( IIterator_IInspectable *iface, IInspectable **value ) { - struct iterator *impl = impl_from_IIterator_IInspectable( iface ); + struct iterator_inspectable *impl = impl_from_IIterator_IInspectable( iface ); TRACE( "iface %p, value %p.\n", iface, value ); return IVectorView_IInspectable_GetAt( impl->view, impl->index, value ); }
-static HRESULT WINAPI iterator_get_HasCurrent( IIterator_IInspectable *iface, BOOL *value ) +static HRESULT WINAPI iterator_inspectable_get_HasCurrent( IIterator_IInspectable *iface, BOOL *value ) { - struct iterator *impl = impl_from_IIterator_IInspectable( iface ); + struct iterator_inspectable *impl = impl_from_IIterator_IInspectable( iface );
TRACE( "iface %p, value %p.\n", iface, value );
@@ -116,9 +116,9 @@ static HRESULT WINAPI iterator_get_HasCurrent( IIterator_IInspectable *iface, BO return S_OK; }
-static HRESULT WINAPI iterator_MoveNext( IIterator_IInspectable *iface, BOOL *value ) +static HRESULT WINAPI iterator_inspectable_MoveNext( IIterator_IInspectable *iface, BOOL *value ) { - struct iterator *impl = impl_from_IIterator_IInspectable( iface ); + struct iterator_inspectable *impl = impl_from_IIterator_IInspectable( iface );
TRACE( "iface %p, value %p.\n", iface, value );
@@ -126,32 +126,32 @@ static HRESULT WINAPI iterator_MoveNext( IIterator_IInspectable *iface, BOOL *va return IIterator_IInspectable_get_HasCurrent( iface, value ); }
-static HRESULT WINAPI iterator_GetMany( IIterator_IInspectable *iface, UINT32 items_size, - IInspectable **items, UINT32 *count ) +static HRESULT WINAPI iterator_inspectable_GetMany( IIterator_IInspectable *iface, UINT32 items_size, + IInspectable **items, UINT32 *count ) { - struct iterator *impl = impl_from_IIterator_IInspectable( iface ); + struct iterator_inspectable *impl = impl_from_IIterator_IInspectable( iface ); TRACE( "iface %p, items_size %u, items %p, count %p.\n", iface, items_size, items, count ); return IVectorView_IInspectable_GetMany( impl->view, impl->index, items_size, items, count ); }
-static const IIterator_IInspectableVtbl iterator_vtbl = +static const IIterator_IInspectableVtbl iterator_inspectable_vtbl = { /* IUnknown methods */ - iterator_QueryInterface, - iterator_AddRef, - iterator_Release, + iterator_inspectable_QueryInterface, + iterator_inspectable_AddRef, + iterator_inspectable_Release, /* IInspectable methods */ - iterator_GetIids, - iterator_GetRuntimeClassName, - iterator_GetTrustLevel, + iterator_inspectable_GetIids, + iterator_inspectable_GetRuntimeClassName, + iterator_inspectable_GetTrustLevel, /* IIterator<IInspectable*> methods */ - iterator_get_Current, - iterator_get_HasCurrent, - iterator_MoveNext, - iterator_GetMany, + iterator_inspectable_get_Current, + iterator_inspectable_get_HasCurrent, + iterator_inspectable_MoveNext, + iterator_inspectable_GetMany, };
-struct vector_view +struct vector_view_inspectable { IVectorView_IInspectable IVectorView_IInspectable_iface; IIterable_IInspectable IIterable_IInspectable_iface; @@ -162,16 +162,16 @@ struct vector_view IInspectable *elements[]; };
-C_ASSERT( sizeof(struct vector_view) == offsetof( struct vector_view, elements[0] ) ); +C_ASSERT( sizeof(struct vector_view_inspectable) == offsetof( struct vector_view_inspectable, elements[0] ) );
-static inline struct vector_view *impl_from_IVectorView_IInspectable( IVectorView_IInspectable *iface ) +static inline struct vector_view_inspectable *impl_from_IVectorView_IInspectable( IVectorView_IInspectable *iface ) { - return CONTAINING_RECORD( iface, struct vector_view, IVectorView_IInspectable_iface ); + return CONTAINING_RECORD( iface, struct vector_view_inspectable, IVectorView_IInspectable_iface ); }
-static HRESULT WINAPI vector_view_QueryInterface( IVectorView_IInspectable *iface, REFIID iid, void **out ) +static HRESULT WINAPI vector_view_inspectable_QueryInterface( IVectorView_IInspectable *iface, REFIID iid, void **out ) { - struct vector_view *impl = impl_from_IVectorView_IInspectable( iface ); + struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable( iface );
TRACE( "iface %p, iid %s, out %p.\n", iface, debugstr_guid( iid ), out );
@@ -195,17 +195,17 @@ static HRESULT WINAPI vector_view_QueryInterface( IVectorView_IInspectable *ifac return E_NOINTERFACE; }
-static ULONG WINAPI vector_view_AddRef( IVectorView_IInspectable *iface ) +static ULONG WINAPI vector_view_inspectable_AddRef( IVectorView_IInspectable *iface ) { - struct vector_view *impl = impl_from_IVectorView_IInspectable( iface ); + struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable( iface ); ULONG ref = InterlockedIncrement( &impl->ref ); TRACE( "iface %p increasing refcount to %lu.\n", iface, ref ); return ref; }
-static ULONG WINAPI vector_view_Release( IVectorView_IInspectable *iface ) +static ULONG WINAPI vector_view_inspectable_Release( IVectorView_IInspectable *iface ) { - struct vector_view *impl = impl_from_IVectorView_IInspectable( iface ); + struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable( iface ); ULONG i, ref = InterlockedDecrement( &impl->ref );
TRACE( "iface %p decreasing refcount to %lu.\n", iface, ref ); @@ -219,27 +219,27 @@ static ULONG WINAPI vector_view_Release( IVectorView_IInspectable *iface ) return ref; }
-static HRESULT WINAPI vector_view_GetIids( IVectorView_IInspectable *iface, ULONG *iid_count, IID **iids ) +static HRESULT WINAPI vector_view_inspectable_GetIids( IVectorView_IInspectable *iface, ULONG *iid_count, IID **iids ) { FIXME( "iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids ); return E_NOTIMPL; }
-static HRESULT WINAPI vector_view_GetRuntimeClassName( IVectorView_IInspectable *iface, HSTRING *class_name ) +static HRESULT WINAPI vector_view_inspectable_GetRuntimeClassName( IVectorView_IInspectable *iface, HSTRING *class_name ) { FIXME( "iface %p, class_name %p stub!\n", iface, class_name ); return E_NOTIMPL; }
-static HRESULT WINAPI vector_view_GetTrustLevel( IVectorView_IInspectable *iface, TrustLevel *trust_level ) +static HRESULT WINAPI vector_view_inspectable_GetTrustLevel( IVectorView_IInspectable *iface, TrustLevel *trust_level ) { FIXME( "iface %p, trust_level %p stub!\n", iface, trust_level ); return E_NOTIMPL; }
-static HRESULT WINAPI vector_view_GetAt( IVectorView_IInspectable *iface, UINT32 index, IInspectable **value ) +static HRESULT WINAPI vector_view_inspectable_GetAt( IVectorView_IInspectable *iface, UINT32 index, IInspectable **value ) { - struct vector_view *impl = impl_from_IVectorView_IInspectable( iface ); + struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable( iface );
TRACE( "iface %p, index %u, value %p.\n", iface, index, value );
@@ -250,9 +250,9 @@ static HRESULT WINAPI vector_view_GetAt( IVectorView_IInspectable *iface, UINT32 return S_OK; }
-static HRESULT WINAPI vector_view_get_Size( IVectorView_IInspectable *iface, UINT32 *value ) +static HRESULT WINAPI vector_view_inspectable_get_Size( IVectorView_IInspectable *iface, UINT32 *value ) { - struct vector_view *impl = impl_from_IVectorView_IInspectable( iface ); + struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable( iface );
TRACE( "iface %p, value %p.\n", iface, value );
@@ -260,10 +260,10 @@ static HRESULT WINAPI vector_view_get_Size( IVectorView_IInspectable *iface, UIN return S_OK; }
-static HRESULT WINAPI vector_view_IndexOf( IVectorView_IInspectable *iface, IInspectable *element, - UINT32 *index, BOOLEAN *found ) +static HRESULT WINAPI vector_view_inspectable_IndexOf( IVectorView_IInspectable *iface, IInspectable *element, + UINT32 *index, BOOLEAN *found ) { - struct vector_view *impl = impl_from_IVectorView_IInspectable( iface ); + struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable( iface ); ULONG i;
TRACE( "iface %p, element %p, index %p, found %p.\n", iface, element, index, found ); @@ -275,10 +275,10 @@ static HRESULT WINAPI vector_view_IndexOf( IVectorView_IInspectable *iface, IIns return S_OK; }
-static HRESULT WINAPI vector_view_GetMany( IVectorView_IInspectable *iface, UINT32 start_index, - UINT32 items_size, IInspectable **items, UINT32 *count ) +static HRESULT WINAPI vector_view_inspectable_GetMany( IVectorView_IInspectable *iface, UINT32 start_index, + UINT32 items_size, IInspectable **items, UINT32 *count ) { - struct vector_view *impl = impl_from_IVectorView_IInspectable( iface ); + struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable( iface ); UINT32 i;
TRACE( "iface %p, start_index %u, items_size %u, items %p, count %p.\n", @@ -296,35 +296,35 @@ static HRESULT WINAPI vector_view_GetMany( IVectorView_IInspectable *iface, UINT return S_OK; }
-static const struct IVectorView_IInspectableVtbl vector_view_vtbl = +static const struct IVectorView_IInspectableVtbl vector_view_inspectable_vtbl = { /* IUnknown methods */ - vector_view_QueryInterface, - vector_view_AddRef, - vector_view_Release, + vector_view_inspectable_QueryInterface, + vector_view_inspectable_AddRef, + vector_view_inspectable_Release, /* IInspectable methods */ - vector_view_GetIids, - vector_view_GetRuntimeClassName, - vector_view_GetTrustLevel, + vector_view_inspectable_GetIids, + vector_view_inspectable_GetRuntimeClassName, + vector_view_inspectable_GetTrustLevel, /* IVectorView<IInspectable*> methods */ - vector_view_GetAt, - vector_view_get_Size, - vector_view_IndexOf, - vector_view_GetMany, + vector_view_inspectable_GetAt, + vector_view_inspectable_get_Size, + vector_view_inspectable_IndexOf, + vector_view_inspectable_GetMany, };
-DEFINE_IINSPECTABLE_( iterable_view, IIterable_IInspectable, struct vector_view, view_impl_from_IIterable_IInspectable, +DEFINE_IINSPECTABLE_( iterable_view_inspectable, IIterable_IInspectable, struct vector_view_inspectable, view_impl_from_IIterable_IInspectable, IIterable_IInspectable_iface, &impl->IVectorView_IInspectable_iface )
-static HRESULT WINAPI iterable_view_First( IIterable_IInspectable *iface, IIterator_IInspectable **value ) +static HRESULT WINAPI iterable_view_inspectable_First( IIterable_IInspectable *iface, IIterator_IInspectable **value ) { - struct vector_view *impl = view_impl_from_IIterable_IInspectable( iface ); - struct iterator *iter; + struct vector_view_inspectable *impl = view_impl_from_IIterable_IInspectable( iface ); + struct iterator_inspectable *iter;
TRACE( "iface %p, value %p.\n", iface, value );
- if (!(iter = calloc( 1, sizeof(struct iterator) ))) return E_OUTOFMEMORY; - iter->IIterator_IInspectable_iface.lpVtbl = &iterator_vtbl; + if (!(iter = calloc( 1, sizeof(struct iterator_inspectable) ))) return E_OUTOFMEMORY; + iter->IIterator_IInspectable_iface.lpVtbl = &iterator_inspectable_vtbl; iter->iid = impl->iids.iterator; iter->ref = 1;
@@ -335,21 +335,21 @@ static HRESULT WINAPI iterable_view_First( IIterable_IInspectable *iface, IItera return S_OK; }
-static const struct IIterable_IInspectableVtbl iterable_view_vtbl = +static const struct IIterable_IInspectableVtbl iterable_view_inspectable_vtbl = { /* IUnknown methods */ - iterable_view_QueryInterface, - iterable_view_AddRef, - iterable_view_Release, + iterable_view_inspectable_QueryInterface, + iterable_view_inspectable_AddRef, + iterable_view_inspectable_Release, /* IInspectable methods */ - iterable_view_GetIids, - iterable_view_GetRuntimeClassName, - iterable_view_GetTrustLevel, + iterable_view_inspectable_GetIids, + iterable_view_inspectable_GetRuntimeClassName, + iterable_view_inspectable_GetTrustLevel, /* IIterable<T> methods */ - iterable_view_First, + iterable_view_inspectable_First, };
-struct vector +struct vector_inspectable { IVector_IInspectable IVector_IInspectable_iface; IIterable_IInspectable IIterable_IInspectable_iface; @@ -361,14 +361,14 @@ struct vector IInspectable **elements; };
-static inline struct vector *impl_from_IVector_IInspectable( IVector_IInspectable *iface ) +static inline struct vector_inspectable *impl_from_IVector_IInspectable( IVector_IInspectable *iface ) { - return CONTAINING_RECORD( iface, struct vector, IVector_IInspectable_iface ); + return CONTAINING_RECORD( iface, struct vector_inspectable, IVector_IInspectable_iface ); }
-static HRESULT WINAPI vector_QueryInterface( IVector_IInspectable *iface, REFIID iid, void **out ) +static HRESULT WINAPI vector_inspectable_QueryInterface( IVector_IInspectable *iface, REFIID iid, void **out ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface );
TRACE( "iface %p, iid %s, out %p.\n", iface, debugstr_guid( iid ), out );
@@ -392,17 +392,17 @@ static HRESULT WINAPI vector_QueryInterface( IVector_IInspectable *iface, REFIID return E_NOINTERFACE; }
-static ULONG WINAPI vector_AddRef( IVector_IInspectable *iface ) +static ULONG WINAPI vector_inspectable_AddRef( IVector_IInspectable *iface ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface ); ULONG ref = InterlockedIncrement( &impl->ref ); TRACE( "iface %p increasing refcount to %lu.\n", iface, ref ); return ref; }
-static ULONG WINAPI vector_Release( IVector_IInspectable *iface ) +static ULONG WINAPI vector_inspectable_Release( IVector_IInspectable *iface ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface ); ULONG ref = InterlockedDecrement( &impl->ref );
TRACE( "iface %p decreasing refcount to %lu.\n", iface, ref ); @@ -416,27 +416,27 @@ static ULONG WINAPI vector_Release( IVector_IInspectable *iface ) return ref; }
-static HRESULT WINAPI vector_GetIids( IVector_IInspectable *iface, ULONG *iid_count, IID **iids ) +static HRESULT WINAPI vector_inspectable_GetIids( IVector_IInspectable *iface, ULONG *iid_count, IID **iids ) { FIXME( "iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids ); return E_NOTIMPL; }
-static HRESULT WINAPI vector_GetRuntimeClassName( IVector_IInspectable *iface, HSTRING *class_name ) +static HRESULT WINAPI vector_inspectable_GetRuntimeClassName( IVector_IInspectable *iface, HSTRING *class_name ) { FIXME( "iface %p, class_name %p stub!\n", iface, class_name ); return E_NOTIMPL; }
-static HRESULT WINAPI vector_GetTrustLevel( IVector_IInspectable *iface, TrustLevel *trust_level ) +static HRESULT WINAPI vector_inspectable_GetTrustLevel( IVector_IInspectable *iface, TrustLevel *trust_level ) { FIXME( "iface %p, trust_level %p stub!\n", iface, trust_level ); return E_NOTIMPL; }
-static HRESULT WINAPI vector_GetAt( IVector_IInspectable *iface, UINT32 index, IInspectable **value ) +static HRESULT WINAPI vector_inspectable_GetAt( IVector_IInspectable *iface, UINT32 index, IInspectable **value ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface );
TRACE( "iface %p, index %u, value %p.\n", iface, index, value );
@@ -447,25 +447,25 @@ static HRESULT WINAPI vector_GetAt( IVector_IInspectable *iface, UINT32 index, I return S_OK; }
-static HRESULT WINAPI vector_get_Size( IVector_IInspectable *iface, UINT32 *value ) +static HRESULT WINAPI vector_inspectable_get_Size( IVector_IInspectable *iface, UINT32 *value ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface ); TRACE( "iface %p, value %p.\n", iface, value ); *value = impl->size; return S_OK; }
-static HRESULT WINAPI vector_GetView( IVector_IInspectable *iface, IVectorView_IInspectable **value ) +static HRESULT WINAPI vector_inspectable_GetView( IVector_IInspectable *iface, IVectorView_IInspectable **value ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); - struct vector_view *view; + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface ); + struct vector_view_inspectable *view; ULONG i;
TRACE( "iface %p, value %p.\n", iface, value );
- if (!(view = calloc( 1, offsetof( struct vector_view, elements[impl->size] ) ))) return E_OUTOFMEMORY; - view->IVectorView_IInspectable_iface.lpVtbl = &vector_view_vtbl; - view->IIterable_IInspectable_iface.lpVtbl = &iterable_view_vtbl; + if (!(view = calloc( 1, offsetof( struct vector_view_inspectable, elements[impl->size] ) ))) return E_OUTOFMEMORY; + view->IVectorView_IInspectable_iface.lpVtbl = &vector_view_inspectable_vtbl; + view->IIterable_IInspectable_iface.lpVtbl = &iterable_view_inspectable_vtbl; view->iids = impl->iids; view->ref = 1;
@@ -475,10 +475,10 @@ static HRESULT WINAPI vector_GetView( IVector_IInspectable *iface, IVectorView_I return S_OK; }
-static HRESULT WINAPI vector_IndexOf( IVector_IInspectable *iface, IInspectable *element, +static HRESULT WINAPI vector_inspectable_IndexOf( IVector_IInspectable *iface, IInspectable *element, UINT32 *index, BOOLEAN *found ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface ); ULONG i;
TRACE( "iface %p, element %p, index %p, found %p.\n", iface, element, index, found ); @@ -490,9 +490,9 @@ static HRESULT WINAPI vector_IndexOf( IVector_IInspectable *iface, IInspectable return S_OK; }
-static HRESULT WINAPI vector_SetAt( IVector_IInspectable *iface, UINT32 index, IInspectable *value ) +static HRESULT WINAPI vector_inspectable_SetAt( IVector_IInspectable *iface, UINT32 index, IInspectable *value ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface );
TRACE( "iface %p, index %u, value %p.\n", iface, index, value );
@@ -502,9 +502,9 @@ static HRESULT WINAPI vector_SetAt( IVector_IInspectable *iface, UINT32 index, I return S_OK; }
-static HRESULT WINAPI vector_InsertAt( IVector_IInspectable *iface, UINT32 index, IInspectable *value ) +static HRESULT WINAPI vector_inspectable_InsertAt( IVector_IInspectable *iface, UINT32 index, IInspectable *value ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface ); IInspectable **tmp = impl->elements;
TRACE( "iface %p, index %u, value %p.\n", iface, index, value ); @@ -524,9 +524,9 @@ static HRESULT WINAPI vector_InsertAt( IVector_IInspectable *iface, UINT32 index return S_OK; }
-static HRESULT WINAPI vector_RemoveAt( IVector_IInspectable *iface, UINT32 index ) +static HRESULT WINAPI vector_inspectable_RemoveAt( IVector_IInspectable *iface, UINT32 index ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface );
TRACE( "iface %p, index %u.\n", iface, index );
@@ -536,18 +536,18 @@ static HRESULT WINAPI vector_RemoveAt( IVector_IInspectable *iface, UINT32 index return S_OK; }
-static HRESULT WINAPI vector_Append( IVector_IInspectable *iface, IInspectable *value ) +static HRESULT WINAPI vector_inspectable_Append( IVector_IInspectable *iface, IInspectable *value ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface );
TRACE( "iface %p, value %p.\n", iface, value );
return IVector_IInspectable_InsertAt( iface, impl->size, value ); }
-static HRESULT WINAPI vector_RemoveAtEnd( IVector_IInspectable *iface ) +static HRESULT WINAPI vector_inspectable_RemoveAtEnd( IVector_IInspectable *iface ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface );
TRACE( "iface %p.\n", iface );
@@ -555,9 +555,9 @@ static HRESULT WINAPI vector_RemoveAtEnd( IVector_IInspectable *iface ) return S_OK; }
-static HRESULT WINAPI vector_Clear( IVector_IInspectable *iface ) +static HRESULT WINAPI vector_inspectable_Clear( IVector_IInspectable *iface ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface );
TRACE( "iface %p.\n", iface );
@@ -569,10 +569,10 @@ static HRESULT WINAPI vector_Clear( IVector_IInspectable *iface ) return S_OK; }
-static HRESULT WINAPI vector_GetMany( IVector_IInspectable *iface, UINT32 start_index, +static HRESULT WINAPI vector_inspectable_GetMany( IVector_IInspectable *iface, UINT32 start_index, UINT32 items_size, IInspectable **items, UINT32 *count ) { - struct vector *impl = impl_from_IVector_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IVector_IInspectable( iface ); UINT32 i;
TRACE( "iface %p, start_index %u, items_size %u, items %p, count %p.\n", @@ -590,7 +590,7 @@ static HRESULT WINAPI vector_GetMany( IVector_IInspectable *iface, UINT32 start_ return S_OK; }
-static HRESULT WINAPI vector_ReplaceAll( IVector_IInspectable *iface, UINT32 count, IInspectable **items ) +static HRESULT WINAPI vector_inspectable_ReplaceAll( IVector_IInspectable *iface, UINT32 count, IInspectable **items ) { HRESULT hr; ULONG i; @@ -602,36 +602,36 @@ static HRESULT WINAPI vector_ReplaceAll( IVector_IInspectable *iface, UINT32 cou return hr; }
-static const struct IVector_IInspectableVtbl vector_vtbl = +static const struct IVector_IInspectableVtbl vector_inspectable_vtbl = { /* IUnknown methods */ - vector_QueryInterface, - vector_AddRef, - vector_Release, + vector_inspectable_QueryInterface, + vector_inspectable_AddRef, + vector_inspectable_Release, /* IInspectable methods */ - vector_GetIids, - vector_GetRuntimeClassName, - vector_GetTrustLevel, + vector_inspectable_GetIids, + vector_inspectable_GetRuntimeClassName, + vector_inspectable_GetTrustLevel, /* IVector<IInspectable*> methods */ - vector_GetAt, - vector_get_Size, - vector_GetView, - vector_IndexOf, - vector_SetAt, - vector_InsertAt, - vector_RemoveAt, - vector_Append, - vector_RemoveAtEnd, - vector_Clear, - vector_GetMany, - vector_ReplaceAll, + vector_inspectable_GetAt, + vector_inspectable_get_Size, + vector_inspectable_GetView, + vector_inspectable_IndexOf, + vector_inspectable_SetAt, + vector_inspectable_InsertAt, + vector_inspectable_RemoveAt, + vector_inspectable_Append, + vector_inspectable_RemoveAtEnd, + vector_inspectable_Clear, + vector_inspectable_GetMany, + vector_inspectable_ReplaceAll, };
-DEFINE_IINSPECTABLE( iterable, IIterable_IInspectable, struct vector, IVector_IInspectable_iface ) +DEFINE_IINSPECTABLE( iterable_inspectable, IIterable_IInspectable, struct vector_inspectable, IVector_IInspectable_iface )
-static HRESULT WINAPI iterable_First( IIterable_IInspectable *iface, IIterator_IInspectable **value ) +static HRESULT WINAPI iterable_inspectable_First( IIterable_IInspectable *iface, IIterator_IInspectable **value ) { - struct vector *impl = impl_from_IIterable_IInspectable( iface ); + struct vector_inspectable *impl = impl_from_IIterable_IInspectable( iface ); IIterable_IInspectable *iterable; IVectorView_IInspectable *view; HRESULT hr; @@ -649,29 +649,29 @@ static HRESULT WINAPI iterable_First( IIterable_IInspectable *iface, IIterator_I return hr; }
-static const struct IIterable_IInspectableVtbl iterable_vtbl = +static const struct IIterable_IInspectableVtbl iterable_inspectable_vtbl = { /* IUnknown methods */ - iterable_QueryInterface, - iterable_AddRef, - iterable_Release, + iterable_inspectable_QueryInterface, + iterable_inspectable_AddRef, + iterable_inspectable_Release, /* IInspectable methods */ - iterable_GetIids, - iterable_GetRuntimeClassName, - iterable_GetTrustLevel, + iterable_inspectable_GetIids, + iterable_inspectable_GetRuntimeClassName, + iterable_inspectable_GetTrustLevel, /* IIterable<T> methods */ - iterable_First, + iterable_inspectable_First, };
HRESULT vector_inspectable_create( const struct vector_iids *iids, void **out ) { - struct vector *impl; + struct vector_inspectable *impl;
TRACE( "iid %s, out %p.\n", debugstr_guid( iids->vector ), out );
if (!(impl = calloc( 1, sizeof(*impl) ))) return E_OUTOFMEMORY; - impl->IVector_IInspectable_iface.lpVtbl = &vector_vtbl; - impl->IIterable_IInspectable_iface.lpVtbl = &iterable_vtbl; + impl->IVector_IInspectable_iface.lpVtbl = &vector_inspectable_vtbl; + impl->IIterable_IInspectable_iface.lpVtbl = &iterable_inspectable_vtbl; impl->iids = *iids; impl->ref = 1;
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/windows.media.speech/Makefile.in | 4 +- dlls/windows.media.speech/private.h | 61 +-- dlls/windows.media.speech/recognizer.c | 2 +- dlls/windows.media.speech/synthesizer.c | 2 +- dlls/windows.media.speech/vector.c | 689 ------------------------ 5 files changed, 6 insertions(+), 752 deletions(-)
diff --git a/dlls/windows.media.speech/Makefile.in b/dlls/windows.media.speech/Makefile.in index 10903cb1d7b..e34bf686b53 100644 --- a/dlls/windows.media.speech/Makefile.in +++ b/dlls/windows.media.speech/Makefile.in @@ -1,5 +1,6 @@ MODULE = windows.media.speech.dll IMPORTS = combase uuid +PARENTSRC = ../winewinrt
C_SRCS = \ async.c \ @@ -8,6 +9,7 @@ C_SRCS = \ main.c \ recognizer.c \ synthesizer.c \ - vector.c + vector.c \ + vector_inspectable.c
IDL_SRCS = classes.idl diff --git a/dlls/windows.media.speech/private.h b/dlls/windows.media.speech/private.h index e80d73ec1fb..c99c4a31fbe 100644 --- a/dlls/windows.media.speech/private.h +++ b/dlls/windows.media.speech/private.h @@ -20,20 +20,10 @@ #ifndef __WINE_WINDOWS_MEDIA_SPEECH_PRIVATE_H #define __WINE_WINDOWS_MEDIA_SPEECH_PRIVATE_H
-#include <stdarg.h> +#include "winewinrt_private.h"
-#define COBJMACROS #include "corerror.h" -#include "windef.h" -#include "winbase.h" -#include "winstring.h" -#include "objbase.h"
-#include "activation.h" - -#define WIDL_using_Windows_Foundation -#define WIDL_using_Windows_Foundation_Collections -#include "windows.foundation.h" #define WIDL_using_Windows_Globalization #include "windows.globalization.h" #define WIDL_using_Windows_Media_SpeechSynthesis @@ -62,14 +52,6 @@ extern IActivationFactory *synthesizer_factory;
-struct vector_iids -{ - const GUID *iterable; - const GUID *iterator; - const GUID *vector; - const GUID *view; -}; - typedef HRESULT (*async_action_callback)( IInspectable *invoker ); typedef HRESULT (*async_operation_inspectable_callback)( IInspectable *invoker, IInspectable **result );
@@ -84,46 +66,5 @@ HRESULT typed_event_handlers_clear( struct list* list );
HRESULT vector_hstring_create( IVector_HSTRING **out ); HRESULT vector_hstring_create_copy( IIterable_HSTRING *iterable, IVector_HSTRING **out ); -HRESULT vector_inspectable_create( const struct vector_iids *iids, IVector_IInspectable **out ); - -#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 diff --git a/dlls/windows.media.speech/recognizer.c b/dlls/windows.media.speech/recognizer.c index c2f386206b8..25f37a6d9d1 100644 --- a/dlls/windows.media.speech/recognizer.c +++ b/dlls/windows.media.speech/recognizer.c @@ -1119,7 +1119,7 @@ static HRESULT WINAPI recognizer_factory_Create( ISpeechRecognizerFactory *iface goto error; }
- if (FAILED(hr = vector_inspectable_create(&constraints_iids, (IVector_IInspectable**)&session->constraints))) + if (FAILED(hr = vector_inspectable_create(&constraints_iids, (void **)&session->constraints))) goto error;
if (FAILED(hr = recognizer_factory_create_audio_capture(session))) diff --git a/dlls/windows.media.speech/synthesizer.c b/dlls/windows.media.speech/synthesizer.c index 39d14b84ab7..b50be746d0f 100644 --- a/dlls/windows.media.speech/synthesizer.c +++ b/dlls/windows.media.speech/synthesizer.c @@ -268,7 +268,7 @@ static HRESULT synthesis_stream_create( ISpeechSynthesisStream **out )
impl->ISpeechSynthesisStream_iface.lpVtbl = &synthesis_stream_vtbl; impl->ref = 1; - if (FAILED(hr = vector_inspectable_create(&markers_iids, (IVector_IInspectable**)&impl->markers))) + if (FAILED(hr = vector_inspectable_create(&markers_iids, (void **)&impl->markers))) goto error;
TRACE("created ISpeechSynthesisStream %p.\n", impl); diff --git a/dlls/windows.media.speech/vector.c b/dlls/windows.media.speech/vector.c index c23fb9dc56e..61b63077d62 100644 --- a/dlls/windows.media.speech/vector.c +++ b/dlls/windows.media.speech/vector.c @@ -773,692 +773,3 @@ error: IVector_HSTRING_Release(*out); return hr; } - -/* - * - * IIterator<Inspectable*> - * - */ - -struct iterator_inspectable -{ - IIterator_IInspectable IIterator_IInspectable_iface; - const GUID *iid; - LONG ref; - - IVectorView_IInspectable *view; - UINT32 index; - UINT32 size; -}; - -static inline struct iterator_inspectable *impl_from_IIterator_IInspectable( IIterator_IInspectable *iface ) -{ - return CONTAINING_RECORD(iface, struct iterator_inspectable, IIterator_IInspectable_iface); -} - -static HRESULT WINAPI iterator_inspectable_QueryInterface( IIterator_IInspectable *iface, REFIID iid, void **out ) -{ - struct iterator_inspectable *impl = impl_from_IIterator_IInspectable(iface); - - TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out); - - if (IsEqualGUID(iid, &IID_IUnknown) || - IsEqualGUID(iid, &IID_IInspectable) || - IsEqualGUID(iid, &IID_IAgileObject) || - IsEqualGUID(iid, impl->iid)) - { - IInspectable_AddRef((*out = &impl->IIterator_IInspectable_iface)); - return S_OK; - } - - WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid)); - *out = NULL; - return E_NOINTERFACE; -} - -static ULONG WINAPI iterator_inspectable_AddRef( IIterator_IInspectable *iface ) -{ - struct iterator_inspectable *impl = impl_from_IIterator_IInspectable(iface); - ULONG ref = InterlockedIncrement(&impl->ref); - TRACE("iface %p increasing refcount to %lu.\n", iface, ref); - return ref; -} - -static ULONG WINAPI iterator_inspectable_Release( IIterator_IInspectable *iface ) -{ - struct iterator_inspectable *impl = impl_from_IIterator_IInspectable(iface); - ULONG ref = InterlockedDecrement(&impl->ref); - - TRACE("iface %p decreasing refcount to %lu.\n", iface, ref); - - if (!ref) - { - IVectorView_IInspectable_Release(impl->view); - free(impl); - } - - return ref; -} - -static HRESULT WINAPI iterator_inspectable_GetIids( IIterator_IInspectable *iface, ULONG *iid_count, IID **iids ) -{ - FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids); - return E_NOTIMPL; -} - -static HRESULT WINAPI iterator_inspectable_GetRuntimeClassName( IIterator_IInspectable *iface, HSTRING *class_name ) -{ - FIXME("iface %p, class_name %p stub!\n", iface, class_name); - return E_NOTIMPL; -} - -static HRESULT WINAPI iterator_inspectable_GetTrustLevel( IIterator_IInspectable *iface, TrustLevel *trust_level ) -{ - FIXME("iface %p, trust_level %p stub!\n", iface, trust_level); - return E_NOTIMPL; -} - -static HRESULT WINAPI iterator_inspectable_get_Current( IIterator_IInspectable *iface, IInspectable **value ) -{ - struct iterator_inspectable *impl = impl_from_IIterator_IInspectable(iface); - TRACE("iface %p, value %p.\n", iface, value); - return IVectorView_IInspectable_GetAt(impl->view, impl->index, value); -} - -static HRESULT WINAPI iterator_inspectable_get_HasCurrent( IIterator_IInspectable *iface, BOOL *value ) -{ - struct iterator_inspectable *impl = impl_from_IIterator_IInspectable(iface); - - TRACE("iface %p, value %p.\n", iface, value); - - *value = impl->index < impl->size; - return S_OK; -} - -static HRESULT WINAPI iterator_inspectable_MoveNext( IIterator_IInspectable *iface, BOOL *value ) -{ - struct iterator_inspectable *impl = impl_from_IIterator_IInspectable(iface); - - TRACE("iface %p, value %p.\n", iface, value); - - if (impl->index < impl->size) impl->index++; - return IIterator_IInspectable_get_HasCurrent(iface, value); -} - -static HRESULT WINAPI iterator_inspectable_GetMany( IIterator_IInspectable *iface, UINT32 items_size, - IInspectable **items, UINT *count ) -{ - struct iterator_inspectable *impl = impl_from_IIterator_IInspectable(iface); - TRACE("iface %p, items_size %u, items %p, count %p.\n", iface, items_size, items, count); - return IVectorView_IInspectable_GetMany(impl->view, impl->index, items_size, items, count); -} - -static const IIterator_IInspectableVtbl iterator_inspectable_vtbl = -{ - /* IUnknown methods */ - iterator_inspectable_QueryInterface, - iterator_inspectable_AddRef, - iterator_inspectable_Release, - /* IInspectable methods */ - iterator_inspectable_GetIids, - iterator_inspectable_GetRuntimeClassName, - iterator_inspectable_GetTrustLevel, - /* IIterator<IInspectable*> methods */ - iterator_inspectable_get_Current, - iterator_inspectable_get_HasCurrent, - iterator_inspectable_MoveNext, - iterator_inspectable_GetMany -}; - -/* - * - * IVectorView<Inspectable*> - * - */ - -struct vector_view_inspectable -{ - IVectorView_IInspectable IVectorView_IInspectable_iface; - IIterable_IInspectable IIterable_IInspectable_iface; - struct vector_iids iids; - LONG ref; - - UINT32 size; - IInspectable *elements[]; -}; - -C_ASSERT(sizeof(struct vector_view_inspectable) == offsetof(struct vector_view_inspectable, elements[0])); - -static inline struct vector_view_inspectable *impl_from_IVectorView_IInspectable( IVectorView_IInspectable *iface ) -{ - return CONTAINING_RECORD(iface, struct vector_view_inspectable, IVectorView_IInspectable_iface); -} - -static HRESULT WINAPI vector_view_inspectable_QueryInterface( IVectorView_IInspectable *iface, REFIID iid, void **out ) -{ - struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable(iface); - - TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out); - - if (IsEqualGUID(iid, &IID_IUnknown) || - IsEqualGUID(iid, &IID_IInspectable) || - IsEqualGUID(iid, &IID_IAgileObject) || - IsEqualGUID(iid, impl->iids.view)) - { - IInspectable_AddRef((*out = &impl->IVectorView_IInspectable_iface)); - return S_OK; - } - - if (IsEqualGUID(iid, impl->iids.iterable)) - { - IInspectable_AddRef((*out = &impl->IIterable_IInspectable_iface)); - return S_OK; - } - - WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid)); - *out = NULL; - return E_NOINTERFACE; -} - -static ULONG WINAPI vector_view_inspectable_AddRef( IVectorView_IInspectable *iface ) -{ - struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable(iface); - ULONG ref = InterlockedIncrement(&impl->ref); - TRACE("iface %p increasing refcount to %lu.\n", iface, ref); - return ref; -} - -static ULONG WINAPI vector_view_inspectable_Release( IVectorView_IInspectable *iface ) -{ - struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable(iface); - ULONG i, ref = InterlockedDecrement(&impl->ref); - - TRACE("iface %p decreasing refcount to %lu.\n", iface, ref); - - if (!ref) - { - for (i = 0; i < impl->size; ++i) IInspectable_Release(impl->elements[i]); - free(impl); - } - - return ref; -} - -static HRESULT WINAPI vector_view_inspectable_GetIids( IVectorView_IInspectable *iface, ULONG *iid_count, IID **iids ) -{ - FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids); - return E_NOTIMPL; -} - -static HRESULT WINAPI vector_view_inspectable_GetRuntimeClassName( IVectorView_IInspectable *iface, HSTRING *class_name ) -{ - FIXME("iface %p, class_name %p stub!\n", iface, class_name); - return E_NOTIMPL; -} - -static HRESULT WINAPI vector_view_inspectable_GetTrustLevel( IVectorView_IInspectable *iface, TrustLevel *trust_level ) -{ - FIXME("iface %p, trust_level %p stub!\n", iface, trust_level); - return E_NOTIMPL; -} - -static HRESULT WINAPI vector_view_inspectable_GetAt( IVectorView_IInspectable *iface, UINT32 index, IInspectable **value ) -{ - struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable(iface); - - TRACE("iface %p, index %u, value %p.\n", iface, index, value); - - *value = NULL; - if (index >= impl->size) return E_BOUNDS; - - IInspectable_AddRef((*value = impl->elements[index])); - return S_OK; -} - -static HRESULT WINAPI vector_view_inspectable_get_Size( IVectorView_IInspectable *iface, UINT32 *value ) -{ - struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable(iface); - - TRACE("iface %p, value %p.\n", iface, value); - - *value = impl->size; - return S_OK; -} - -static HRESULT WINAPI vector_view_inspectable_IndexOf( IVectorView_IInspectable *iface, IInspectable *element, - UINT32 *index, BOOLEAN *found ) -{ - struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable(iface); - ULONG i; - - TRACE("iface %p, element %p, index %p, found %p.\n", iface, element, index, found); - - for (i = 0; i < impl->size; ++i) if (impl->elements[i] == element) break; - if ((*found = (i < impl->size))) *index = i; - else *index = 0; - - return S_OK; -} - -static HRESULT WINAPI vector_view_inspectable_GetMany( IVectorView_IInspectable *iface, UINT32 start_index, - UINT32 items_size, IInspectable **items, UINT *count ) -{ - struct vector_view_inspectable *impl = impl_from_IVectorView_IInspectable(iface); - UINT32 i; - - TRACE("iface %p, start_index %u, items_size %u, items %p, count %p.\n", - iface, start_index, items_size, items, count); - - if (start_index >= impl->size) return E_BOUNDS; - - for (i = start_index; i < impl->size; ++i) - { - if (i - start_index >= items_size) break; - IInspectable_AddRef((items[i - start_index] = impl->elements[i])); - } - *count = i - start_index; - - return S_OK; -} - -static const struct IVectorView_IInspectableVtbl vector_view_inspectable_vtbl = -{ - /* IUnknown methods */ - vector_view_inspectable_QueryInterface, - vector_view_inspectable_AddRef, - vector_view_inspectable_Release, - /* IInspectable methods */ - vector_view_inspectable_GetIids, - vector_view_inspectable_GetRuntimeClassName, - vector_view_inspectable_GetTrustLevel, - /* IVectorView<IInspectable*> methods */ - vector_view_inspectable_GetAt, - vector_view_inspectable_get_Size, - vector_view_inspectable_IndexOf, - vector_view_inspectable_GetMany -}; - -/* - * - * IIterable<Inspectable*> - * - */ - -DEFINE_IINSPECTABLE_(iterable_view_inspectable, IIterable_IInspectable, struct vector_view_inspectable, - view_impl_from_IIterable_IInspectable, IIterable_IInspectable_iface, &impl->IVectorView_IInspectable_iface) - -static HRESULT WINAPI iterable_view_inspectable_First( IIterable_IInspectable *iface, IIterator_IInspectable **value ) -{ - struct vector_view_inspectable *impl = view_impl_from_IIterable_IInspectable(iface); - struct iterator_inspectable *iter; - - TRACE("iface %p, value %p.\n", iface, value); - - if (!(iter = calloc(1, sizeof(struct iterator_inspectable)))) return E_OUTOFMEMORY; - iter->IIterator_IInspectable_iface.lpVtbl = &iterator_inspectable_vtbl; - iter->iid = impl->iids.iterator; - iter->ref = 1; - - IVectorView_IInspectable_AddRef((iter->view = &impl->IVectorView_IInspectable_iface)); - iter->size = impl->size; - - *value = &iter->IIterator_IInspectable_iface; - return S_OK; -} - -static const struct IIterable_IInspectableVtbl iterable_view_inspectable_vtbl = -{ - /* IUnknown methods */ - iterable_view_inspectable_QueryInterface, - iterable_view_inspectable_AddRef, - iterable_view_inspectable_Release, - /* IInspectable methods */ - iterable_view_inspectable_GetIids, - iterable_view_inspectable_GetRuntimeClassName, - iterable_view_inspectable_GetTrustLevel, - /* IIterable<IInspectable*> methods */ - iterable_view_inspectable_First -}; - -/* - * - * IVector<Inspectable*> - * - */ - -struct vector_inspectable -{ - IVector_IInspectable IVector_IInspectable_iface; - IIterable_IInspectable IIterable_IInspectable_iface; - struct vector_iids iids; - LONG ref; - - UINT32 size; - UINT32 capacity; - IInspectable **elements; -}; - -static inline struct vector_inspectable *impl_from_IVector_IInspectable( IVector_IInspectable *iface ) -{ - return CONTAINING_RECORD(iface, struct vector_inspectable, IVector_IInspectable_iface); -} - -static HRESULT WINAPI vector_inspectable_QueryInterface( IVector_IInspectable *iface, REFIID iid, void **out ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - - TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out); - - if (IsEqualGUID(iid, &IID_IUnknown) || - IsEqualGUID(iid, &IID_IInspectable) || - IsEqualGUID(iid, &IID_IAgileObject) || - IsEqualGUID(iid, impl->iids.vector)) - { - IInspectable_AddRef((*out = &impl->IVector_IInspectable_iface)); - return S_OK; - } - - if (IsEqualGUID(iid, impl->iids.iterable)) - { - IInspectable_AddRef((*out = &impl->IIterable_IInspectable_iface)); - return S_OK; - } - - WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid)); - *out = NULL; - return E_NOINTERFACE; -} - -static ULONG WINAPI vector_inspectable_AddRef( IVector_IInspectable *iface ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - ULONG ref = InterlockedIncrement(&impl->ref); - TRACE("iface %p increasing refcount to %lu.\n", iface, ref); - return ref; -} - -static ULONG WINAPI vector_inspectable_Release( IVector_IInspectable *iface ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - ULONG ref = InterlockedDecrement(&impl->ref); - - TRACE("iface %p decreasing refcount to %lu.\n", iface, ref); - - if (!ref) - { - IVector_IInspectable_Clear(iface); - free(impl); - } - - return ref; -} - -static HRESULT WINAPI vector_inspectable_GetIids( IVector_IInspectable *iface, ULONG *iid_count, IID **iids ) -{ - FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids); - return E_NOTIMPL; -} - -static HRESULT WINAPI vector_inspectable_GetRuntimeClassName( IVector_IInspectable *iface, HSTRING *class_name ) -{ - FIXME("iface %p, class_name %p stub!\n", iface, class_name); - return E_NOTIMPL; -} - -static HRESULT WINAPI vector_inspectable_GetTrustLevel( IVector_IInspectable *iface, TrustLevel *trust_level ) -{ - FIXME("iface %p, trust_level %p stub!\n", iface, trust_level); - return E_NOTIMPL; -} - -static HRESULT WINAPI vector_inspectable_GetAt( IVector_IInspectable *iface, UINT32 index, IInspectable **value ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - - TRACE("iface %p, index %u, value %p.\n", iface, index, value); - - *value = NULL; - if (index >= impl->size) return E_BOUNDS; - - IInspectable_AddRef((*value = impl->elements[index])); - return S_OK; -} - -static HRESULT WINAPI vector_inspectable_get_Size( IVector_IInspectable *iface, UINT32 *value ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - TRACE("iface %p, value %p.\n", iface, value); - *value = impl->size; - return S_OK; -} - -static HRESULT WINAPI vector_inspectable_GetView( IVector_IInspectable *iface, IVectorView_IInspectable **value ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - struct vector_view_inspectable *view; - ULONG i; - - TRACE("iface %p, value %p.\n", iface, value); - - if (!(view = calloc(1, offsetof(struct vector_view_inspectable, elements[impl->size])))) return E_OUTOFMEMORY; - view->IVectorView_IInspectable_iface.lpVtbl = &vector_view_inspectable_vtbl; - view->IIterable_IInspectable_iface.lpVtbl = &iterable_view_inspectable_vtbl; - view->iids = impl->iids; - view->ref = 1; - - for (i = 0; i < impl->size; ++i) IInspectable_AddRef((view->elements[view->size++] = impl->elements[i])); - - *value = &view->IVectorView_IInspectable_iface; - return S_OK; -} - -static HRESULT WINAPI vector_inspectable_IndexOf( IVector_IInspectable *iface, - IInspectable *element, UINT32 *index, BOOLEAN *found ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - ULONG i; - - TRACE("iface %p, element %p, index %p, found %p.\n", iface, element, index, found); - - for (i = 0; i < impl->size; ++i) if (impl->elements[i] == element) break; - if ((*found = (i < impl->size))) *index = i; - else *index = 0; - - return S_OK; -} - -static HRESULT WINAPI vector_inspectable_SetAt( IVector_IInspectable *iface, UINT32 index, IInspectable *value ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - - TRACE("iface %p, index %u, value %p.\n", iface, index, value); - - if (index >= impl->size) return E_BOUNDS; - IInspectable_Release(impl->elements[index]); - IInspectable_AddRef((impl->elements[index] = value)); - return S_OK; -} - -static HRESULT WINAPI vector_inspectable_InsertAt( IVector_IInspectable *iface, UINT32 index, IInspectable *value ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - IInspectable **tmp = impl->elements; - - TRACE("iface %p, index %u, value %p.\n", iface, index, value); - - if (impl->size == impl->capacity) - { - impl->capacity = max(32, impl->capacity * 3 / 2); - if (!(impl->elements = realloc(impl->elements, impl->capacity * sizeof(*impl->elements)))) - { - impl->elements = tmp; - return E_OUTOFMEMORY; - } - } - - memmove(impl->elements + index + 1, impl->elements + index, (impl->size++ - index) * sizeof(*impl->elements)); - IInspectable_AddRef((impl->elements[index] = value)); - return S_OK; -} - -static HRESULT WINAPI vector_inspectable_RemoveAt( IVector_IInspectable *iface, UINT32 index ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - - TRACE("iface %p, index %u.\n", iface, index); - - if (index >= impl->size) return E_BOUNDS; - IInspectable_Release(impl->elements[index]); - memmove(impl->elements + index, impl->elements + index + 1, (--impl->size - index) * sizeof(*impl->elements)); - return S_OK; -} - -static HRESULT WINAPI vector_inspectable_Append( IVector_IInspectable *iface, IInspectable *value ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - - TRACE("iface %p, value %p.\n", iface, value); - - return IVector_IInspectable_InsertAt(iface, impl->size, value); -} - -static HRESULT WINAPI vector_inspectable_RemoveAtEnd( IVector_IInspectable *iface ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - - TRACE("iface %p.\n", iface); - - if (impl->size) IInspectable_Release(impl->elements[--impl->size]); - return S_OK; -} - -static HRESULT WINAPI vector_inspectable_Clear( IVector_IInspectable *iface ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - - TRACE("iface %p.\n", iface); - - while (impl->size) IVector_IInspectable_RemoveAtEnd(iface); - free(impl->elements); - impl->capacity = 0; - impl->elements = NULL; - - return S_OK; -} - -static HRESULT WINAPI vector_inspectable_GetMany( IVector_IInspectable *iface, UINT32 start_index, - UINT32 items_size, IInspectable **items, UINT *count ) -{ - struct vector_inspectable *impl = impl_from_IVector_IInspectable(iface); - UINT32 i; - - TRACE("iface %p, start_index %u, items_size %u, items %p, count %p.\n", - iface, start_index, items_size, items, count); - - if (start_index >= impl->size) return E_BOUNDS; - - for (i = start_index; i < impl->size; ++i) - { - if (i - start_index >= items_size) break; - IInspectable_AddRef((items[i - start_index] = impl->elements[i])); - } - *count = i - start_index; - - return S_OK; -} - -static HRESULT WINAPI vector_inspectable_ReplaceAll( IVector_IInspectable *iface, UINT32 count, IInspectable **items ) -{ - HRESULT hr; - ULONG i; - - TRACE("iface %p, count %u, items %p.\n", iface, count, items); - - hr = IVector_IInspectable_Clear(iface); - for (i = 0; i < count && SUCCEEDED(hr); ++i) hr = IVector_IInspectable_Append(iface, items[i]); - return hr; -} - -static const struct IVector_IInspectableVtbl vector_inspectable_vtbl = -{ - /* IUnknown methods */ - vector_inspectable_QueryInterface, - vector_inspectable_AddRef, - vector_inspectable_Release, - /* IInspectable methods */ - vector_inspectable_GetIids, - vector_inspectable_GetRuntimeClassName, - vector_inspectable_GetTrustLevel, - /* IVector<IInspectable*> methods */ - vector_inspectable_GetAt, - vector_inspectable_get_Size, - vector_inspectable_GetView, - vector_inspectable_IndexOf, - vector_inspectable_SetAt, - vector_inspectable_InsertAt, - vector_inspectable_RemoveAt, - vector_inspectable_Append, - vector_inspectable_RemoveAtEnd, - vector_inspectable_Clear, - vector_inspectable_GetMany, - vector_inspectable_ReplaceAll -}; - -/* - * - * IIterable<Inspectable*> - * - */ - -DEFINE_IINSPECTABLE(iterable_inspectable, IIterable_IInspectable, struct vector_inspectable, IVector_IInspectable_iface) - -static HRESULT WINAPI iterable_inspectable_First( IIterable_IInspectable *iface, IIterator_IInspectable **value ) -{ - struct vector_inspectable *impl = impl_from_IIterable_IInspectable(iface); - IIterable_IInspectable *iterable; - IVectorView_IInspectable *view; - HRESULT hr; - - TRACE("iface %p, value %p.\n", iface, value); - - if (FAILED(hr = IVector_IInspectable_GetView(&impl->IVector_IInspectable_iface, &view))) return hr; - - hr = IVectorView_IInspectable_QueryInterface(view, impl->iids.iterable, (void **)&iterable); - IVectorView_IInspectable_Release(view); - if (FAILED(hr)) return hr; - - hr = IIterable_IInspectable_First(iterable, value); - IIterable_IInspectable_Release(iterable); - return hr; -} - -static const struct IIterable_IInspectableVtbl iterable_inspectable_vtbl = -{ - /* IUnknown methods */ - iterable_inspectable_QueryInterface, - iterable_inspectable_AddRef, - iterable_inspectable_Release, - /* IInspectable methods */ - iterable_inspectable_GetIids, - iterable_inspectable_GetRuntimeClassName, - iterable_inspectable_GetTrustLevel, - /* IIterable<IInspectable*> methods */ - iterable_inspectable_First -}; - -HRESULT vector_inspectable_create( const struct vector_iids *iids, IVector_IInspectable **out ) -{ - struct vector_inspectable *impl; - - TRACE("iid %s, out %p.\n", debugstr_guid(iids->vector), out); - - if (!(impl = calloc(1, sizeof(*impl)))) return E_OUTOFMEMORY; - impl->IVector_IInspectable_iface.lpVtbl = &vector_inspectable_vtbl; - impl->IIterable_IInspectable_iface.lpVtbl = &iterable_inspectable_vtbl; - impl->iids = *iids; - impl->ref = 1; - - *out = &impl->IVector_IInspectable_iface; - TRACE("created %p\n", *out); - return S_OK; -}
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/windows.media.speech/Makefile.in | 2 +- dlls/windows.media.speech/listconstraint.c | 4 +- dlls/windows.media.speech/private.h | 3 - dlls/winewinrt/Makefile.in | 1 + .../vector.c => winewinrt/vector_hstring.c} | 344 ++++++++---------- dlls/winewinrt/winewinrt_private.h | 2 + 6 files changed, 163 insertions(+), 193 deletions(-) rename dlls/{windows.media.speech/vector.c => winewinrt/vector_hstring.c} (61%)
diff --git a/dlls/windows.media.speech/Makefile.in b/dlls/windows.media.speech/Makefile.in index e34bf686b53..4fb76e2ed40 100644 --- a/dlls/windows.media.speech/Makefile.in +++ b/dlls/windows.media.speech/Makefile.in @@ -9,7 +9,7 @@ C_SRCS = \ main.c \ recognizer.c \ synthesizer.c \ - vector.c \ + vector_hstring.c \ vector_inspectable.c
IDL_SRCS = classes.idl diff --git a/dlls/windows.media.speech/listconstraint.c b/dlls/windows.media.speech/listconstraint.c index ef0dff0e4d5..24194fdf38a 100644 --- a/dlls/windows.media.speech/listconstraint.c +++ b/dlls/windows.media.speech/listconstraint.c @@ -129,7 +129,7 @@ static HRESULT WINAPI list_constraint_get_Commands( ISpeechRecognitionListConst hr = IVector_HSTRING_QueryInterface(impl->commands, &IID_IIterable_HSTRING, (void **)&iterable); if (FAILED(hr)) return hr;
- hr = vector_hstring_create_copy(iterable, value); + hr = vector_hstring_copy(iterable, value); IIterable_HSTRING_Release(iterable);
return hr; @@ -359,7 +359,7 @@ static HRESULT WINAPI constraint_factory_CreateWithTag( ISpeechRecognitionListCo return E_POINTER;
if (!(impl = calloc(1, sizeof(*impl)))) return E_OUTOFMEMORY; - if (FAILED(hr = vector_hstring_create_copy(commands, &impl->commands))) goto error; + if (FAILED(hr = vector_hstring_copy(commands, &impl->commands))) goto error;
impl->ISpeechRecognitionListConstraint_iface.lpVtbl = &speech_recognition_list_constraint_vtbl; impl->ISpeechRecognitionConstraint_iface.lpVtbl = &speech_recognition_constraint_vtbl; diff --git a/dlls/windows.media.speech/private.h b/dlls/windows.media.speech/private.h index c99c4a31fbe..0e6f7f19787 100644 --- a/dlls/windows.media.speech/private.h +++ b/dlls/windows.media.speech/private.h @@ -64,7 +64,4 @@ HRESULT typed_event_handlers_remove( struct list *list, EventRegistrationToken * HRESULT typed_event_handlers_notify( struct list *list, IInspectable *sender, IInspectable *args ); HRESULT typed_event_handlers_clear( struct list* list );
-HRESULT vector_hstring_create( IVector_HSTRING **out ); -HRESULT vector_hstring_create_copy( IIterable_HSTRING *iterable, IVector_HSTRING **out ); - #endif diff --git a/dlls/winewinrt/Makefile.in b/dlls/winewinrt/Makefile.in index 812db0a6227..994293053ae 100644 --- a/dlls/winewinrt/Makefile.in +++ b/dlls/winewinrt/Makefile.in @@ -3,4 +3,5 @@ IMPORTS = combase uuid
C_SRCS = \ main.c \ + vector_hstring.c \ vector_inspectable.c diff --git a/dlls/windows.media.speech/vector.c b/dlls/winewinrt/vector_hstring.c similarity index 61% rename from dlls/windows.media.speech/vector.c rename to dlls/winewinrt/vector_hstring.c index 61b63077d62..7ca0879afb5 100644 --- a/dlls/windows.media.speech/vector.c +++ b/dlls/winewinrt/vector_hstring.c @@ -1,4 +1,4 @@ -/* WinRT Windows.Media.Speech implementation +/* WinRT Vector<HSTRING> implementation * * Copyright 2022 Bernhard Kölbl for CodeWeavers * @@ -17,72 +17,64 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include "private.h" +#include "winewinrt_private.h"
-#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(speech); - -/* - * - * IIterator<HSTRING> - * - */ +WINE_DEFAULT_DEBUG_CHANNEL(winrt);
struct iterator_hstring { - IIterator_HSTRING IIterator_HSTRING_iface; - LONG ref; + IIterator_HSTRING IIterator_HSTRING_iface; + LONG ref;
- IVectorView_HSTRING *view; - UINT32 index; - UINT32 size; + IVectorView_HSTRING *view; + UINT32 index; + UINT32 size; };
static inline struct iterator_hstring *impl_from_IIterator_HSTRING( IIterator_HSTRING *iface ) { - return CONTAINING_RECORD(iface, struct iterator_hstring, IIterator_HSTRING_iface); + return CONTAINING_RECORD( iface, struct iterator_hstring, IIterator_HSTRING_iface ); }
static HRESULT WINAPI iterator_hstring_QueryInterface( IIterator_HSTRING *iface, REFIID iid, void **out ) { - struct iterator_hstring *impl = impl_from_IIterator_HSTRING(iface); + struct iterator_hstring *impl = impl_from_IIterator_HSTRING( iface );
- TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out); + TRACE( "iface %p, iid %s, out %p.\n", iface, debugstr_guid( iid ), out );
- if (IsEqualGUID(iid, &IID_IUnknown) || - IsEqualGUID(iid, &IID_IInspectable) || - IsEqualGUID(iid, &IID_IAgileObject) || - IsEqualGUID(iid, &IID_IIterator_HSTRING)) + if (IsEqualGUID( iid, &IID_IUnknown ) || + IsEqualGUID( iid, &IID_IInspectable ) || + IsEqualGUID( iid, &IID_IAgileObject ) || + IsEqualGUID( iid, &IID_IIterator_HSTRING )) { - IInspectable_AddRef((*out = &impl->IIterator_HSTRING_iface)); - return S_OK; + IInspectable_AddRef( (*out = &impl->IIterator_HSTRING_iface) ); + return S_OK; }
- WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid)); + FIXME( "%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid( iid ) ); *out = NULL; return E_NOINTERFACE; }
static ULONG WINAPI iterator_hstring_AddRef( IIterator_HSTRING *iface ) { - struct iterator_hstring *impl = impl_from_IIterator_HSTRING(iface); - ULONG ref = InterlockedIncrement(&impl->ref); - TRACE("iface %p increasing refcount to %lu.\n", iface, ref); + struct iterator_hstring *impl = impl_from_IIterator_HSTRING( iface ); + ULONG ref = InterlockedIncrement( &impl->ref ); + TRACE( "iface %p increasing refcount to %lu.\n", iface, ref ); return ref; }
static ULONG WINAPI iterator_hstring_Release( IIterator_HSTRING *iface ) { - struct iterator_hstring *impl = impl_from_IIterator_HSTRING(iface); - ULONG ref = InterlockedDecrement(&impl->ref); + struct iterator_hstring *impl = impl_from_IIterator_HSTRING( iface ); + ULONG ref = InterlockedDecrement( &impl->ref );
- TRACE("iface %p decreasing refcount to %lu.\n", iface, ref); + TRACE( "iface %p decreasing refcount to %lu.\n", iface, ref );
if (!ref) { - IVectorView_HSTRING_Release(impl->view); - free(impl); + IVectorView_HSTRING_Release( impl->view ); + free( impl ); }
return ref; @@ -90,34 +82,34 @@ static ULONG WINAPI iterator_hstring_Release( IIterator_HSTRING *iface )
static HRESULT WINAPI iterator_hstring_GetIids( IIterator_HSTRING *iface, ULONG *iid_count, IID **iids ) { - FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids); + FIXME( "iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids ); return E_NOTIMPL; }
static HRESULT WINAPI iterator_hstring_GetRuntimeClassName( IIterator_HSTRING *iface, HSTRING *class_name ) { - FIXME("iface %p, class_name %p stub!\n", iface, class_name); + FIXME( "iface %p, class_name %p stub!\n", iface, class_name ); return E_NOTIMPL; }
static HRESULT WINAPI iterator_hstring_GetTrustLevel( IIterator_HSTRING *iface, TrustLevel *trust_level ) { - FIXME("iface %p, trust_level %p stub!\n", iface, trust_level); + FIXME( "iface %p, trust_level %p stub!\n", iface, trust_level ); return E_NOTIMPL; }
static HRESULT WINAPI iterator_hstring_get_Current( IIterator_HSTRING *iface, HSTRING *value ) { - struct iterator_hstring *impl = impl_from_IIterator_HSTRING(iface); - TRACE("iface %p, value %p.\n", iface, value); - return IVectorView_HSTRING_GetAt(impl->view, impl->index, value); + struct iterator_hstring *impl = impl_from_IIterator_HSTRING( iface ); + TRACE( "iface %p, value %p.\n", iface, value ); + return IVectorView_HSTRING_GetAt( impl->view, impl->index, value ); }
static HRESULT WINAPI iterator_hstring_get_HasCurrent( IIterator_HSTRING *iface, BOOL *value ) { - struct iterator_hstring *impl = impl_from_IIterator_HSTRING(iface); + struct iterator_hstring *impl = impl_from_IIterator_HSTRING( iface );
- TRACE("iface %p, value %p.\n", iface, value); + TRACE( "iface %p, value %p.\n", iface, value );
*value = impl->index < impl->size; return S_OK; @@ -125,20 +117,19 @@ static HRESULT WINAPI iterator_hstring_get_HasCurrent( IIterator_HSTRING *iface,
static HRESULT WINAPI iterator_hstring_MoveNext( IIterator_HSTRING *iface, BOOL *value ) { - struct iterator_hstring *impl = impl_from_IIterator_HSTRING(iface); + struct iterator_hstring *impl = impl_from_IIterator_HSTRING( iface );
- TRACE("iface %p, value %p.\n", iface, value); + TRACE( "iface %p, value %p.\n", iface, value );
if (impl->index < impl->size) impl->index++; - return IIterator_HSTRING_get_HasCurrent(iface, value); + return IIterator_HSTRING_get_HasCurrent( iface, value ); }
-static HRESULT WINAPI iterator_hstring_GetMany( IIterator_HSTRING *iface, UINT32 items_size, - HSTRING *items, UINT *count ) +static HRESULT WINAPI iterator_hstring_GetMany( IIterator_HSTRING *iface, UINT32 items_size, HSTRING *items, UINT *count ) { - struct iterator_hstring *impl = impl_from_IIterator_HSTRING(iface); - TRACE("iface %p, items_size %u, items %p, count %p.\n", iface, items_size, items, count); - return IVectorView_HSTRING_GetMany(impl->view, impl->index, items_size, items, count); + struct iterator_hstring *impl = impl_from_IIterator_HSTRING( iface ); + TRACE( "iface %p, items_size %u, items %p, count %p.\n", iface, items_size, items, count ); + return IVectorView_HSTRING_GetMany( impl->view, impl->index, items_size, items, count ); }
static const IIterator_HSTRINGVtbl iterator_hstring_vtbl = @@ -158,12 +149,6 @@ static const IIterator_HSTRINGVtbl iterator_hstring_vtbl = iterator_hstring_GetMany, };
-/* - * - * IVectorView<HSTRING> - * - */ - struct vector_view_hstring { IVectorView_HSTRING IVectorView_HSTRING_iface; @@ -174,58 +159,58 @@ struct vector_view_hstring HSTRING elements[]; };
-C_ASSERT(sizeof(struct vector_view_hstring) == offsetof(struct vector_view_hstring, elements[0])); +C_ASSERT( sizeof(struct vector_view_hstring) == offsetof( struct vector_view_hstring, elements[0] ) );
static inline struct vector_view_hstring *impl_from_IVectorView_HSTRING( IVectorView_HSTRING *iface ) { - return CONTAINING_RECORD(iface, struct vector_view_hstring, IVectorView_HSTRING_iface); + return CONTAINING_RECORD( iface, struct vector_view_hstring, IVectorView_HSTRING_iface ); }
static HRESULT WINAPI vector_view_hstring_QueryInterface( IVectorView_HSTRING *iface, REFIID iid, void **out ) { - struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING(iface); + struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING( iface );
- TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out); + TRACE( "iface %p, iid %s, out %p.\n", iface, debugstr_guid( iid ), out );
- if (IsEqualGUID(iid, &IID_IUnknown) || - IsEqualGUID(iid, &IID_IInspectable) || - IsEqualGUID(iid, &IID_IAgileObject) || - IsEqualGUID(iid, &IID_IVectorView_HSTRING)) + if (IsEqualGUID( iid, &IID_IUnknown ) || + IsEqualGUID( iid, &IID_IInspectable ) || + IsEqualGUID( iid, &IID_IAgileObject ) || + IsEqualGUID( iid, &IID_IVectorView_HSTRING )) { - IInspectable_AddRef((*out = &impl->IVectorView_HSTRING_iface)); + IInspectable_AddRef( (*out = &impl->IVectorView_HSTRING_iface) ); return S_OK; }
- if (IsEqualGUID(iid, &IID_IIterable_HSTRING)) + if (IsEqualGUID( iid, &IID_IIterable_HSTRING )) { - IInspectable_AddRef((*out = &impl->IIterable_HSTRING_iface)); + IInspectable_AddRef( (*out = &impl->IIterable_HSTRING_iface) ); return S_OK; }
- WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid)); + FIXME( "%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid( iid ) ); *out = NULL; return E_NOINTERFACE; }
static ULONG WINAPI vector_view_hstring_AddRef( IVectorView_HSTRING *iface ) { - struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING(iface); - ULONG ref = InterlockedIncrement(&impl->ref); - TRACE("iface %p increasing refcount to %lu.\n", iface, ref); + struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING( iface ); + ULONG ref = InterlockedIncrement( &impl->ref ); + TRACE( "iface %p increasing refcount to %lu.\n", iface, ref ); return ref; }
static ULONG WINAPI vector_view_hstring_Release( IVectorView_HSTRING *iface ) { - struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING(iface); - ULONG i, ref = InterlockedDecrement(&impl->ref); + struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING( iface ); + ULONG i, ref = InterlockedDecrement( &impl->ref );
- TRACE("iface %p decreasing refcount to %lu.\n", iface, ref); + TRACE( "iface %p decreasing refcount to %lu.\n", iface, ref );
if (!ref) { - for (i = 0; i < impl->size; ++i) WindowsDeleteString(impl->elements[i]); - free(impl); + for (i = 0; i < impl->size; ++i) WindowsDeleteString( impl->elements[i] ); + free( impl ); }
return ref; @@ -233,39 +218,39 @@ static ULONG WINAPI vector_view_hstring_Release( IVectorView_HSTRING *iface )
static HRESULT WINAPI vector_view_hstring_GetIids( IVectorView_HSTRING *iface, ULONG *iid_count, IID **iids ) { - FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids); + FIXME( "iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids ); return E_NOTIMPL; }
static HRESULT WINAPI vector_view_hstring_GetRuntimeClassName( IVectorView_HSTRING *iface, HSTRING *class_name ) { - FIXME("iface %p, class_name %p stub!\n", iface, class_name); + FIXME( "iface %p, class_name %p stub!\n", iface, class_name ); return E_NOTIMPL; }
static HRESULT WINAPI vector_view_hstring_GetTrustLevel( IVectorView_HSTRING *iface, TrustLevel *trust_level ) { - FIXME("iface %p, trust_level %p stub!\n", iface, trust_level); + FIXME( "iface %p, trust_level %p stub!\n", iface, trust_level ); return E_NOTIMPL; }
static HRESULT WINAPI vector_view_hstring_GetAt( IVectorView_HSTRING *iface, UINT32 index, HSTRING *value ) { - struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING(iface); + struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING( iface );
- TRACE("iface %p, index %u, value %p.\n", iface, index, value); + TRACE( "iface %p, index %u, value %p.\n", iface, index, value );
*value = NULL; if (index >= impl->size) return E_BOUNDS;
- return WindowsDuplicateString(impl->elements[index], value); + return WindowsDuplicateString( impl->elements[index], value ); }
static HRESULT WINAPI vector_view_hstring_get_Size( IVectorView_HSTRING *iface, UINT32 *value ) { - struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING(iface); + struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING( iface );
- TRACE("iface %p, value %p.\n", iface, value); + TRACE( "iface %p, value %p.\n", iface, value );
*value = impl->size; return S_OK; @@ -274,10 +259,10 @@ static HRESULT WINAPI vector_view_hstring_get_Size( IVectorView_HSTRING *iface, static HRESULT WINAPI vector_view_hstring_IndexOf( IVectorView_HSTRING *iface, HSTRING element, UINT32 *index, BOOLEAN *found ) { - struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING(iface); + struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING( iface ); ULONG i;
- TRACE("iface %p, element %p, index %p, found %p.\n", iface, element, index, found); + TRACE( "iface %p, element %p, index %p, found %p.\n", iface, element, index, found );
for (i = 0; i < impl->size; ++i) if (impl->elements[i] == element) break; if ((*found = (i < impl->size))) *index = i; @@ -289,7 +274,7 @@ static HRESULT WINAPI vector_view_hstring_IndexOf( IVectorView_HSTRING *iface, H static HRESULT WINAPI vector_view_hstring_GetMany( IVectorView_HSTRING *iface, UINT32 start_index, UINT32 items_size, HSTRING *items, UINT *count ) { - struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING(iface); + struct vector_view_hstring *impl = impl_from_IVectorView_HSTRING( iface ); HRESULT hr; UINT32 i;
@@ -301,7 +286,7 @@ static HRESULT WINAPI vector_view_hstring_GetMany( IVectorView_HSTRING *iface, U for (i = start_index; i < impl->size; ++i) { if (i - start_index >= items_size) break; - if (FAILED(hr = WindowsDuplicateString(impl->elements[i], &items[i - start_index]))) goto error; + if (FAILED(hr = WindowsDuplicateString( impl->elements[i], &items[i - start_index] ))) goto error; } *count = i - start_index;
@@ -309,7 +294,7 @@ static HRESULT WINAPI vector_view_hstring_GetMany( IVectorView_HSTRING *iface, U
error: *count = 0; - while (i-- > start_index) WindowsDeleteString(items[i-start_index]); + while (i-- > start_index) WindowsDeleteString( items[i - start_index] ); return hr; }
@@ -330,27 +315,21 @@ static const struct IVectorView_HSTRINGVtbl vector_view_hstring_vtbl = vector_view_hstring_GetMany, };
-/* - * - * IIterable<HSTRING> - * - */ - -DEFINE_IINSPECTABLE_(iterable_view_hstring, IIterable_HSTRING, struct vector_view_hstring, view_impl_from_IIterable_HSTRING, - IIterable_HSTRING_iface, &impl->IVectorView_HSTRING_iface) +DEFINE_IINSPECTABLE_( iterable_view_hstring, IIterable_HSTRING, struct vector_view_hstring, view_impl_from_IIterable_HSTRING, + IIterable_HSTRING_iface, &impl->IVectorView_HSTRING_iface )
static HRESULT WINAPI iterable_view_hstring_First( IIterable_HSTRING *iface, IIterator_HSTRING **value ) { - struct vector_view_hstring *impl = view_impl_from_IIterable_HSTRING(iface); + struct vector_view_hstring *impl = view_impl_from_IIterable_HSTRING( iface ); struct iterator_hstring *iter;
- TRACE("iface %p, value %p.\n", iface, value); + TRACE( "iface %p, value %p.\n", iface, value );
- if (!(iter = calloc(1, sizeof(*iter)))) return E_OUTOFMEMORY; + if (!(iter = calloc( 1, sizeof(struct iterator_hstring) ))) return E_OUTOFMEMORY; iter->IIterator_HSTRING_iface.lpVtbl = &iterator_hstring_vtbl; iter->ref = 1;
- IVectorView_HSTRING_AddRef((iter->view = &impl->IVectorView_HSTRING_iface)); + IVectorView_HSTRING_AddRef( (iter->view = &impl->IVectorView_HSTRING_iface) ); iter->size = impl->size;
*value = &iter->IIterator_HSTRING_iface; @@ -371,12 +350,6 @@ static const struct IIterable_HSTRINGVtbl iterable_view_hstring_vtbl = iterable_view_hstring_First, };
-/* - * - * IVector<HSTRING> - * - */ - struct vector_hstring { IVector_HSTRING IVector_HSTRING_iface; @@ -390,54 +363,54 @@ struct vector_hstring
static inline struct vector_hstring *impl_from_IVector_HSTRING( IVector_HSTRING *iface ) { - return CONTAINING_RECORD(iface, struct vector_hstring, IVector_HSTRING_iface); + return CONTAINING_RECORD( iface, struct vector_hstring, IVector_HSTRING_iface ); }
static HRESULT WINAPI vector_hstring_QueryInterface( IVector_HSTRING *iface, REFIID iid, void **out ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface );
- TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out); + TRACE( "iface %p, iid %s, out %p.\n", iface, debugstr_guid( iid ), out );
- if (IsEqualGUID(iid, &IID_IUnknown) || - IsEqualGUID(iid, &IID_IInspectable) || - IsEqualGUID(iid, &IID_IAgileObject) || - IsEqualGUID(iid, &IID_IVector_HSTRING)) + if (IsEqualGUID( iid, &IID_IUnknown ) || + IsEqualGUID( iid, &IID_IInspectable ) || + IsEqualGUID( iid, &IID_IAgileObject ) || + IsEqualGUID( iid, &IID_IVector_HSTRING )) { - IInspectable_AddRef((*out = &impl->IVector_HSTRING_iface)); + IInspectable_AddRef( (*out = &impl->IVector_HSTRING_iface) ); return S_OK; }
- if (IsEqualGUID(iid, &IID_IIterable_HSTRING)) + if (IsEqualGUID( iid, &IID_IIterable_HSTRING )) { - IInspectable_AddRef((*out = &impl->IIterable_HSTRING_iface)); + IInspectable_AddRef( (*out = &impl->IIterable_HSTRING_iface) ); return S_OK; }
- WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid)); + FIXME( "%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid( iid ) ); *out = NULL; return E_NOINTERFACE; }
static ULONG WINAPI vector_hstring_AddRef( IVector_HSTRING *iface ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); - ULONG ref = InterlockedIncrement(&impl->ref); - TRACE("iface %p, ref %lu.\n", iface, ref); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface ); + ULONG ref = InterlockedIncrement( &impl->ref ); + TRACE( "iface %p increasing refcount to %lu.\n", iface, ref ); return ref; }
static ULONG WINAPI vector_hstring_Release( IVector_HSTRING *iface ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); - ULONG ref = InterlockedDecrement(&impl->ref); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface ); + ULONG ref = InterlockedDecrement( &impl->ref );
- TRACE("iface %p, ref %lu.\n", iface, ref); + TRACE( "iface %p decreasing refcount to %lu.\n", iface, ref );
if (!ref) { - IVector_HSTRING_Clear(iface); - free(impl); + IVector_HSTRING_Clear( iface ); + free( impl ); }
return ref; @@ -463,19 +436,19 @@ static HRESULT WINAPI vector_hstring_GetTrustLevel( IVector_HSTRING *iface, Trus
static HRESULT WINAPI vector_hstring_GetAt( IVector_HSTRING *iface, UINT32 index, HSTRING *value ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface );
TRACE( "iface %p, index %u, value %p.\n", iface, index, value );
*value = NULL; if (index >= impl->size) return E_BOUNDS;
- return WindowsDuplicateString(impl->elements[index], value); + return WindowsDuplicateString( impl->elements[index], value ); }
static HRESULT WINAPI vector_hstring_get_Size( IVector_HSTRING *iface, UINT32 *value ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface ); TRACE( "iface %p, value %p.\n", iface, value ); *value = impl->size; return S_OK; @@ -483,36 +456,39 @@ static HRESULT WINAPI vector_hstring_get_Size( IVector_HSTRING *iface, UINT32 *v
static HRESULT WINAPI vector_hstring_GetView( IVector_HSTRING *iface, IVectorView_HSTRING **value ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface ); struct vector_view_hstring *view; HRESULT hr; ULONG i;
- TRACE("iface %p, value %p.\n", iface, value); + TRACE( "iface %p, value %p.\n", iface, value );
- if (!(view = calloc(1, offsetof(struct vector_view_hstring, elements[impl->size])))) return E_OUTOFMEMORY; + if (!(view = calloc( 1, offsetof( struct vector_view_hstring, elements[impl->size] ) ))) return E_OUTOFMEMORY; view->IVectorView_HSTRING_iface.lpVtbl = &vector_view_hstring_vtbl; view->IIterable_HSTRING_iface.lpVtbl = &iterable_view_hstring_vtbl; view->ref = 1;
for (i = 0; i < impl->size; ++i) - if (FAILED(hr = WindowsDuplicateString(impl->elements[i], &view->elements[view->size++]))) goto error; + { + hr = WindowsDuplicateString( impl->elements[i], &view->elements[view->size++] ); + if (FAILED(hr)) goto error; + }
*value = &view->IVectorView_HSTRING_iface; return S_OK;
error: - while (i-- > 0) WindowsDeleteString(view->elements[i]); - free(view); + while (i-- > 0) WindowsDeleteString( view->elements[i] ); + free( view ); return hr; }
static HRESULT WINAPI vector_hstring_IndexOf( IVector_HSTRING *iface, HSTRING element, UINT32 *index, BOOLEAN *found ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface ); ULONG i;
- TRACE("iface %p, element %p, index %p, found %p.\n", iface, element, index, found); + TRACE( "iface %p, element %p, index %p, found %p.\n", iface, element, index, found );
for (i = 0; i < impl->size; ++i) if (impl->elements[i] == element) break; if ((*found = (i < impl->size))) *index = i; @@ -523,86 +499,85 @@ static HRESULT WINAPI vector_hstring_IndexOf( IVector_HSTRING *iface, HSTRING el
static HRESULT WINAPI vector_hstring_SetAt( IVector_HSTRING *iface, UINT32 index, HSTRING value ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface ); HSTRING tmp; HRESULT hr;
TRACE( "iface %p, index %u, value %p.\n", iface, index, value );
if (index >= impl->size) return E_BOUNDS; + if (FAILED(hr = WindowsDuplicateString( value, &tmp ))) return hr;
- if (FAILED(hr = WindowsDuplicateString(value, &tmp))) return hr; - - WindowsDeleteString(impl->elements[index]); + WindowsDeleteString( impl->elements[index] ); impl->elements[index] = tmp; return S_OK; }
static HRESULT WINAPI vector_hstring_InsertAt( IVector_HSTRING *iface, UINT32 index, HSTRING value ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); - HSTRING tmp, *tmp2 = impl->elements; + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface ); + HSTRING tmp, *elements = impl->elements; HRESULT hr;
TRACE( "iface %p, index %u, value %p.\n", iface, index, value );
- if (FAILED(hr = WindowsDuplicateString(value, &tmp))) return hr; + if (FAILED(hr = WindowsDuplicateString( value, &tmp ))) return hr;
if (impl->size == impl->capacity) { - impl->capacity = max(32, impl->capacity * 3 / 2); - if (!(impl->elements = realloc(impl->elements, impl->capacity * sizeof(*impl->elements)))) + impl->capacity = max( 32, impl->capacity * 3 / 2 ); + if (!(impl->elements = realloc( impl->elements, impl->capacity * sizeof(*impl->elements) ))) { - impl->elements = tmp2; + impl->elements = elements; return E_OUTOFMEMORY; } }
- memmove(impl->elements + index + 1, impl->elements + index, (impl->size++ - index) * sizeof(*impl->elements)); + memmove( impl->elements + index + 1, impl->elements + index, (impl->size++ - index) * sizeof(*impl->elements) ); impl->elements[index] = tmp; return S_OK; }
static HRESULT WINAPI vector_hstring_RemoveAt( IVector_HSTRING *iface, UINT32 index ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface );
- TRACE("iface %p, index %u.\n", iface, index); + TRACE( "iface %p, index %u.\n", iface, index );
if (index >= impl->size) return E_BOUNDS;
- WindowsDeleteString(impl->elements[index]); - memmove(impl->elements + index, impl->elements + index + 1, (--impl->size - index) * sizeof(*impl->elements)); + WindowsDeleteString( impl->elements[index] ); + memmove( impl->elements + index, impl->elements + index + 1, (--impl->size - index) * sizeof(*impl->elements) ); return S_OK; }
static HRESULT WINAPI vector_hstring_Append( IVector_HSTRING *iface, HSTRING value ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface );
- TRACE("iface %p, value %p.\n", iface, value); + TRACE( "iface %p, value %p.\n", iface, value );
- return IVector_HSTRING_InsertAt(iface, impl->size, value); + return IVector_HSTRING_InsertAt( iface, impl->size, value ); }
static HRESULT WINAPI vector_hstring_RemoveAtEnd( IVector_HSTRING *iface ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface );
- TRACE("iface %p.\n", iface); + TRACE( "iface %p.\n", iface );
- if (impl->size) WindowsDeleteString(impl->elements[--impl->size]); + if (impl->size) WindowsDeleteString( impl->elements[--impl->size] ); return S_OK; }
static HRESULT WINAPI vector_hstring_Clear( IVector_HSTRING *iface ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface );
- TRACE("iface %p.\n", iface); + TRACE( "iface %p.\n", iface );
- while (impl->size) IVector_HSTRING_RemoveAtEnd(iface); - free(impl->elements); + while (impl->size) IVector_HSTRING_RemoveAtEnd( iface ); + free( impl->elements ); impl->capacity = 0; impl->elements = NULL;
@@ -612,18 +587,19 @@ static HRESULT WINAPI vector_hstring_Clear( IVector_HSTRING *iface ) static HRESULT WINAPI vector_hstring_GetMany( IVector_HSTRING *iface, UINT32 start_index, UINT32 items_size, HSTRING *items, UINT32 *count ) { - struct vector_hstring *impl = impl_from_IVector_HSTRING(iface); + struct vector_hstring *impl = impl_from_IVector_HSTRING( iface ); HRESULT hr; UINT32 i;
- TRACE("iface %p, start_index %u, items_size %u, items %p, count %p.\n", iface, start_index, items_size, items, count); + TRACE( "iface %p, start_index %u, items_size %u, items %p, count %p.\n", + iface, start_index, items_size, items, count );
if (start_index >= impl->size) return E_BOUNDS;
for (i = start_index; i < impl->size; ++i) { if (i - start_index >= items_size) break; - if (FAILED(hr = WindowsDuplicateString(impl->elements[i], &items[i-start_index]))) goto error; + if (FAILED(hr = WindowsDuplicateString( impl->elements[i], &items[i - start_index] ))) goto error; } *count = i - start_index;
@@ -631,7 +607,7 @@ static HRESULT WINAPI vector_hstring_GetMany( IVector_HSTRING *iface, UINT32 sta
error: *count = 0; - while (i-- > start_index) WindowsDeleteString(items[i-start_index]); + while (i-- > start_index) WindowsDeleteString( items[i - start_index] ); return hr; }
@@ -640,10 +616,10 @@ static HRESULT WINAPI vector_hstring_ReplaceAll( IVector_HSTRING *iface, UINT32 HRESULT hr; ULONG i;
- TRACE("iface %p, count %u, items %p.\n", iface, count, items); + TRACE( "iface %p, count %u, items %p.\n", iface, count, items );
- hr = IVector_HSTRING_Clear(iface); - for (i = 0; i < count && SUCCEEDED(hr); ++i) hr = IVector_HSTRING_Append(iface, items[i]); + hr = IVector_HSTRING_Clear( iface ); + for (i = 0; i < count && SUCCEEDED(hr); ++i) hr = IVector_HSTRING_Append( iface, items[i] ); return hr; }
@@ -672,31 +648,25 @@ static const struct IVector_HSTRINGVtbl vector_hstring_vtbl = vector_hstring_ReplaceAll, };
-/* - * - * IIterable<HSTRING> - * - */ - -DEFINE_IINSPECTABLE(iterable_hstring, IIterable_HSTRING, struct vector_hstring, IVector_HSTRING_iface) +DEFINE_IINSPECTABLE( iterable_hstring, IIterable_HSTRING, struct vector_hstring, IVector_HSTRING_iface )
static HRESULT WINAPI iterable_hstring_First( IIterable_HSTRING *iface, IIterator_HSTRING **value ) { - struct vector_hstring *impl = impl_from_IIterable_HSTRING(iface); + struct vector_hstring *impl = impl_from_IIterable_HSTRING( iface ); IIterable_HSTRING *iterable; IVectorView_HSTRING *view; HRESULT hr;
- TRACE("iface %p, value %p.\n", iface, value); + TRACE( "iface %p, value %p.\n", iface, value );
- if (FAILED(hr = IVector_HSTRING_GetView(&impl->IVector_HSTRING_iface, &view))) return hr; + if (FAILED(hr = IVector_HSTRING_GetView( &impl->IVector_HSTRING_iface, &view ))) return hr;
- hr = IVectorView_HSTRING_QueryInterface(view, &IID_IIterable_HSTRING, (void **)&iterable); - IVectorView_HSTRING_Release(view); + hr = IVectorView_HSTRING_QueryInterface( view, &IID_IIterable_HSTRING, (void **)&iterable ); + IVectorView_HSTRING_Release( view ); if (FAILED(hr)) return hr;
- hr = IIterable_HSTRING_First(iterable, value); - IIterable_HSTRING_Release(iterable); + hr = IIterable_HSTRING_First( iterable, value ); + IIterable_HSTRING_Release( iterable ); return hr; }
@@ -718,19 +688,19 @@ HRESULT vector_hstring_create( IVector_HSTRING **out ) { struct vector_hstring *impl;
- TRACE("out %p.\n", out); + TRACE( "out %p.\n", out );
- if (!(impl = calloc(1, sizeof(*impl)))) return E_OUTOFMEMORY; + if (!(impl = calloc( 1, sizeof(*impl) ))) return E_OUTOFMEMORY; impl->IVector_HSTRING_iface.lpVtbl = &vector_hstring_vtbl; impl->IIterable_HSTRING_iface.lpVtbl = &iterable_hstring_vtbl; impl->ref = 1;
*out = &impl->IVector_HSTRING_iface; - TRACE("created %p\n", *out); + TRACE( "created %p\n", *out ); return S_OK; }
-HRESULT vector_hstring_create_copy( IIterable_HSTRING *iterable, IVector_HSTRING **out ) +HRESULT vector_hstring_copy( IIterable_HSTRING *iterable, IVector_HSTRING **out ) { struct vector_hstring *impl; IIterator_HSTRING *iterator; diff --git a/dlls/winewinrt/winewinrt_private.h b/dlls/winewinrt/winewinrt_private.h index 9f478f077d0..44ac80ea172 100644 --- a/dlls/winewinrt/winewinrt_private.h +++ b/dlls/winewinrt/winewinrt_private.h @@ -43,6 +43,8 @@ struct vector_iids const GUID *iterator; };
+extern HRESULT vector_hstring_create( IVector_HSTRING **out ); +extern HRESULT vector_hstring_copy( IIterable_HSTRING *iterable, IVector_HSTRING **out ); extern HRESULT vector_inspectable_create( const struct vector_iids *iids, void **out );
#define DEFINE_IINSPECTABLE_( pfx, iface_type, impl_type, impl_from, iface_mem, expr ) \
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=130092
Your paranoid android.
=== debian11 (build log) ===
../wine/dlls/winewinrt/vector_hstring.c:1419:9: error: conflicting types for ���vector_inspectable_create��� Task: The win32 Wine build failed
=== debian11b (build log) ===
../wine/dlls/winewinrt/vector_hstring.c:1419:9: error: conflicting types for ���vector_inspectable_create��� ../wine/dlls/winewinrt/vector_hstring.c:1419:9: error: conflicting types for ���vector_inspectable_create��� Task: The wow64 Wine build failed
Would it be better with a static library and a `wine/` header?
On Mon Mar 6 09:44:55 2023 +0000, Rémi Bernon wrote:
Would it be better with a static library and a `wine/` header?
This was my initial idea as, afaiu, some of this code represents C++ features on the ABI side.
On Mon Mar 6 09:44:55 2023 +0000, Bernhard Kölbl wrote:
This was my initial idea as, afaiu, some of this code represents C++ features on the ABI side.
It wouldn't solve the stub module proliferation problem, but I'm asking because I suspect @julliard doesn't like the `PARENTSRC` trick very much, especially when it's used like here to mix module sources.
On Mon Mar 6 09:48:11 2023 +0000, Rémi Bernon wrote:
It wouldn't solve the stub module proliferation problem, but I'm asking because I suspect @julliard doesn't like the `PARENTSRC` trick very much, especially when it's used like here to mix module sources.
I think I would be for using the `apisetschema` to redirect all winrt dlls to `winewinrt`, this would both avoid `PARENTSRC` and adding code statically.
Since winrt dlls need to share a lot of code I think this is the best solution without sacrificing application compatibility.
On Mon Mar 6 11:50:05 2023 +0000, Loïc Rebmeister wrote:
I think I would be for using the `apisetschema` to redirect all winrt dlls to `winewinrt`, this would both avoid `PARENTSRC` and adding code statically. Since winrt dlls need to share a lot of code I think this is the best solution without sacrificing application compatibility.
I don't think we want to implement all of WinRT inside a single module.