From: Rémi Bernon <rbernon(a)codeweavers.com>
---
dlls/windows.gaming.input/Makefile.in | 1 -
dlls/windows.gaming.input/controller.c | 4 +-
dlls/windows.gaming.input/gamepad.c | 2 +-
dlls/windows.gaming.input/private.h | 9 -
dlls/windows.gaming.input/racing_wheel.c | 2 +-
dlls/windows.media.speech/private.h | 10 -
dlls/windows.media.speech/recognizer.c | 2 +-
dlls/windows.media.speech/synthesizer.c | 2 +-
dlls/windows.media.speech/vector.c | 689 ------------------
include/wine/winrt.idl | 10 +
libs/winewinrt/Makefile.in | 3 +-
.../winewinrt/vector_inspectable.c | 322 ++++----
12 files changed, 182 insertions(+), 874 deletions(-)
rename dlls/windows.gaming.input/vector.c => libs/winewinrt/vector_inspectable.c
(50%)
diff --git a/dlls/windows.gaming.input/Makefile.in
b/dlls/windows.gaming.input/Makefile.in
index 273587444fb..c7d1c2578e1 100644
--- a/dlls/windows.gaming.input/Makefile.in
+++ b/dlls/windows.gaming.input/Makefile.in
@@ -15,7 +15,6 @@ C_SRCS = \
provider.c \
racing_wheel.c \
ramp_effect.c \
- vector.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 94904cfce8a..fd1335c689a 100644
--- a/dlls/windows.gaming.input/private.h
+++ b/dlls/windows.gaming.input/private.h
@@ -55,15 +55,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 );
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/windows.media.speech/private.h b/dlls/windows.media.speech/private.h
index 79d39f69b8c..f41024e2fe2 100644
--- a/dlls/windows.media.speech/private.h
+++ b/dlls/windows.media.speech/private.h
@@ -62,15 +62,6 @@ extern IActivationFactory *recognizer_factory;
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 );
@@ -85,6 +76,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 );
#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;
-}
diff --git a/include/wine/winrt.idl b/include/wine/winrt.idl
index e64ae3fc328..9a4285dd70f 100644
--- a/include/wine/winrt.idl
+++ b/include/wine/winrt.idl
@@ -27,6 +27,16 @@
import "windows.foundation.idl";
+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 );
+
extern const char *debugstr_hstring( HSTRING hstr );
cpp_quote("#define DEFINE_IINSPECTABLE_( pfx, iface_type, impl_type, impl_from,
iface_mem, expr ) \\")
diff --git a/libs/winewinrt/Makefile.in b/libs/winewinrt/Makefile.in
index 7c0f2c668d3..6998a68b1c1 100644
--- a/libs/winewinrt/Makefile.in
+++ b/libs/winewinrt/Makefile.in
@@ -1,4 +1,5 @@
STATICLIB = libwinewinrt.a
C_SRCS = \
- debug.c
+ debug.c \
+ vector_inspectable.c
diff --git a/dlls/windows.gaming.input/vector.c b/libs/winewinrt/vector_inspectable.c
similarity index 50%
rename from dlls/windows.gaming.input/vector.c
rename to libs/winewinrt/vector_inspectable.c
index 8958b07c0f2..4d0f61d7f53 100644
--- a/dlls/windows.gaming.input/vector.c
+++ b/libs/winewinrt/vector_inspectable.c
@@ -1,4 +1,4 @@
-/* WinRT Windows.Gaming.Input implementation
+/* WinRT Vector<IInspectable> implementation
*
* Copyright 2021 Rémi Bernon for CodeWeavers
*
@@ -19,11 +19,9 @@
#include "private.h"
-#include "wine/debug.h"
+WINE_DEFAULT_DEBUG_CHANNEL(winrt);
-WINE_DEFAULT_DEBUG_CHANNEL(combase);
-
-struct iterator
+struct iterator_inspectable
{
IIterator_IInspectable IIterator_IInspectable_iface;
const GUID *iid;
@@ -34,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 );
@@ -59,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 );
@@ -83,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 );
@@ -118,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 );
@@ -128,31 +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, UINT *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 =
{
- iterator_QueryInterface,
- iterator_AddRef,
- iterator_Release,
+ /* IUnknown methods */
+ 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;
@@ -160,17 +159,19 @@ struct vector_view
LONG ref;
UINT32 size;
- IInspectable *elements[1];
+ IInspectable *elements[];
};
-static inline struct vector_view *impl_from_IVectorView_IInspectable(
IVectorView_IInspectable *iface )
+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, 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 );
@@ -194,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 );
@@ -218,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 );
@@ -249,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 );
@@ -259,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 );
@@ -274,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, UINT
*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",
@@ -295,34 +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 =
{
- vector_view_QueryInterface,
- vector_view_AddRef,
- vector_view_Release,
+ /* IUnknown methods */
+ 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;
@@ -333,20 +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 =
{
- iterable_view_QueryInterface,
- iterable_view_AddRef,
- iterable_view_Release,
+ /* IUnknown methods */
+ 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;
@@ -358,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 );
@@ -389,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 );
@@ -413,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 );
@@ -444,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;
@@ -472,9 +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,
UINT32 *index, BOOLEAN *found )
+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 );
@@ -486,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 );
@@ -498,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 );
@@ -520,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 );
@@ -532,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 );
@@ -551,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 );
@@ -565,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,
- UINT32 items_size, IInspectable **items, UINT
*count )
+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",
@@ -586,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;
@@ -598,35 +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 =
{
- vector_QueryInterface,
- vector_AddRef,
- vector_Release,
+ /* IUnknown methods */
+ 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;
@@ -644,28 +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 =
{
- iterable_QueryInterface,
- iterable_AddRef,
- iterable_Release,
+ /* IUnknown methods */
+ 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_create( const struct vector_iids *iids, void **out )
+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;
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/2298