mirror of
https://gitlab.winehq.org/wine/wine.git
synced 2024-11-21 17:09:06 -07:00
wintypes: Add stubs for IMap<HSTRING, IInspectable *>, IObservableMap<HSTRING, IInspectable *>, IIterable<IKeyValuePair<HSTRING, IInspectable *>> to PropertySet implementation.
This commit is contained in:
parent
84a240babb
commit
7f2bb2cb46
2 changed files with 164 additions and 3 deletions
|
@ -31,6 +31,9 @@ WINE_DEFAULT_DEBUG_CHANNEL( wintypes );
|
|||
struct propertyset
|
||||
{
|
||||
IPropertySet IPropertySet_iface;
|
||||
IObservableMap_HSTRING_IInspectable IObservableMap_HSTRING_IInspectable_iface;
|
||||
IMap_HSTRING_IInspectable IMap_HSTRING_IInspectable_iface;
|
||||
IIterable_IKeyValuePair_HSTRING_IInspectable IIterable_IKeyValuePair_HSTRING_IInspectable_iface;
|
||||
LONG ref;
|
||||
};
|
||||
|
||||
|
@ -42,8 +45,11 @@ static inline struct propertyset *impl_from_IPropertySet( IPropertySet *iface )
|
|||
static HRESULT STDMETHODCALLTYPE propertyset_QueryInterface( IPropertySet *iface, REFIID iid,
|
||||
void **out )
|
||||
{
|
||||
struct propertyset *impl;
|
||||
|
||||
TRACE( "(%p, %s, %p)\n", iface, debugstr_guid( iid ), out );
|
||||
|
||||
impl = impl_from_IPropertySet( iface );
|
||||
*out = NULL;
|
||||
if (IsEqualGUID( iid, &IID_IUnknown ) ||
|
||||
IsEqualGUID( iid, &IID_IInspectable ) ||
|
||||
|
@ -53,6 +59,24 @@ static HRESULT STDMETHODCALLTYPE propertyset_QueryInterface( IPropertySet *iface
|
|||
IUnknown_AddRef( (IUnknown *)*out );
|
||||
return S_OK;
|
||||
}
|
||||
if (IsEqualGUID( iid, &IID_IObservableMap_HSTRING_IInspectable ))
|
||||
{
|
||||
*out = &impl->IObservableMap_HSTRING_IInspectable_iface;
|
||||
IUnknown_AddRef( (IUnknown *)*out );
|
||||
return S_OK;
|
||||
}
|
||||
if (IsEqualGUID( iid, &IID_IMap_HSTRING_IInspectable ))
|
||||
{
|
||||
*out = &impl->IMap_HSTRING_IInspectable_iface;
|
||||
IUnknown_AddRef( (IUnknown *)iface );
|
||||
return S_OK;
|
||||
}
|
||||
if (IsEqualGUID( iid, &IID_IIterable_IKeyValuePair_HSTRING_IInspectable ))
|
||||
{
|
||||
*out = &impl->IIterable_IKeyValuePair_HSTRING_IInspectable_iface;
|
||||
IUnknown_AddRef( (IUnknown *)iface );
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
FIXME( "%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid( iid ) );
|
||||
return E_NOINTERFACE;
|
||||
|
@ -116,6 +140,140 @@ static const IPropertySetVtbl propertyset_vtbl =
|
|||
propertyset_GetTrustLevel,
|
||||
};
|
||||
|
||||
DEFINE_IINSPECTABLE( propertyset_IObservableMap, IObservableMap_HSTRING_IInspectable,
|
||||
struct propertyset, IPropertySet_iface );
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE propertyset_IObservableMap_add_MapChanged(
|
||||
IObservableMap_HSTRING_IInspectable *iface,
|
||||
IMapChangedEventHandler_HSTRING_IInspectable *handler, EventRegistrationToken *token )
|
||||
{
|
||||
FIXME( "(%p, %p, %p) stub!\n", iface, handler, token );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE propertyset_IObservableMap_remove_MapChanged(
|
||||
IObservableMap_HSTRING_IInspectable *iface, EventRegistrationToken token )
|
||||
{
|
||||
FIXME( "(%p, %I64d) stub!\n", iface, token.value );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
const static IObservableMap_HSTRING_IInspectableVtbl propertyset_IObservableMap_vtbl =
|
||||
{
|
||||
/* IUnknown */
|
||||
propertyset_IObservableMap_QueryInterface,
|
||||
propertyset_IObservableMap_AddRef,
|
||||
propertyset_IObservableMap_Release,
|
||||
/* IInspectable */
|
||||
propertyset_IObservableMap_GetIids,
|
||||
propertyset_IObservableMap_GetRuntimeClassName,
|
||||
propertyset_IObservableMap_GetTrustLevel,
|
||||
/* IObservableMap<HSTRING, IInspectable*> */
|
||||
propertyset_IObservableMap_add_MapChanged,
|
||||
propertyset_IObservableMap_remove_MapChanged,
|
||||
};
|
||||
|
||||
DEFINE_IINSPECTABLE( propertyset_IMap, IMap_HSTRING_IInspectable, struct propertyset,
|
||||
IPropertySet_iface );
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE propertyset_Lookup( IMap_HSTRING_IInspectable *iface,
|
||||
HSTRING key,
|
||||
IInspectable **value )
|
||||
{
|
||||
FIXME( "(%p, %s, %p) stub!\n", iface, debugstr_hstring( key ), value );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE
|
||||
propertyset_get_size( IMap_HSTRING_IInspectable *iface, UINT32 *size )
|
||||
{
|
||||
FIXME( "(%p, %p) stub!\n", iface, size );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE propertyset_HasKey( IMap_HSTRING_IInspectable *iface,
|
||||
HSTRING key, boolean *exists )
|
||||
{
|
||||
FIXME( "(%p, %s, %p) stub!\n", iface, debugstr_hstring( key ), exists );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE propertyset_GetView(
|
||||
IMap_HSTRING_IInspectable *iface, IMapView_HSTRING_IInspectable **view )
|
||||
{
|
||||
FIXME( "(%p, %p) stub!\n", iface, view );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE propertyset_Insert( IMap_HSTRING_IInspectable *iface,
|
||||
HSTRING key, IInspectable *value,
|
||||
boolean *replaced )
|
||||
{
|
||||
FIXME( "(%p, %s, %p, %p) stub!\n", iface, debugstr_hstring( key ), value, replaced );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE propertyset_Remove( IMap_HSTRING_IInspectable *iface,
|
||||
HSTRING key )
|
||||
{
|
||||
FIXME( "(%p, %s) stub!\n", iface, debugstr_hstring( key ) );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE propertyset_Clear( IMap_HSTRING_IInspectable *iface )
|
||||
{
|
||||
FIXME( "(%p) stub!\n", iface );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
const static IMap_HSTRING_IInspectableVtbl propertyset_IMap_vtbl =
|
||||
{
|
||||
/* IUnknown */
|
||||
propertyset_IMap_QueryInterface,
|
||||
propertyset_IMap_AddRef,
|
||||
propertyset_IMap_Release,
|
||||
/* IInspectable */
|
||||
propertyset_IMap_GetIids,
|
||||
propertyset_IMap_GetRuntimeClassName,
|
||||
propertyset_IMap_GetTrustLevel,
|
||||
/* IMap<HSTRING, IInspectable*> */
|
||||
propertyset_Lookup,
|
||||
propertyset_get_size,
|
||||
propertyset_HasKey,
|
||||
propertyset_GetView,
|
||||
propertyset_Insert,
|
||||
propertyset_Remove,
|
||||
propertyset_Clear,
|
||||
};
|
||||
|
||||
DEFINE_IINSPECTABLE_( iterable_kvpair_HSTRING_IInspectable,
|
||||
IIterable_IKeyValuePair_HSTRING_IInspectable, struct propertyset,
|
||||
impl_from_IIterable_IKeyValuePair_HSTRING_IInspectable,
|
||||
IIterable_IKeyValuePair_HSTRING_IInspectable_iface,
|
||||
&impl->IMap_HSTRING_IInspectable_iface );
|
||||
|
||||
static HRESULT STDMETHODCALLTYPE
|
||||
iterable_kvpair_HSTRING_IInspectable_First( IIterable_IKeyValuePair_HSTRING_IInspectable *iface,
|
||||
IIterator_IKeyValuePair_HSTRING_IInspectable **iter )
|
||||
{
|
||||
FIXME( "(%p, %p) stub!\n", iface, iter );
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
const static IIterable_IKeyValuePair_HSTRING_IInspectableVtbl iterable_kvpair_HSTRING_IInspectable_vtbl =
|
||||
{
|
||||
/* IUnknown */
|
||||
iterable_kvpair_HSTRING_IInspectable_QueryInterface,
|
||||
iterable_kvpair_HSTRING_IInspectable_AddRef,
|
||||
iterable_kvpair_HSTRING_IInspectable_Release,
|
||||
/* IInspectable */
|
||||
iterable_kvpair_HSTRING_IInspectable_GetIids,
|
||||
iterable_kvpair_HSTRING_IInspectable_GetRuntimeClassName,
|
||||
iterable_kvpair_HSTRING_IInspectable_GetTrustLevel,
|
||||
/* IIterable<IKeyValuePair<HSTRING, IInspectable*>> */
|
||||
iterable_kvpair_HSTRING_IInspectable_First
|
||||
};
|
||||
|
||||
struct propertyset_factory
|
||||
{
|
||||
IActivationFactory IActivationFactory_iface;
|
||||
|
@ -180,6 +338,9 @@ static HRESULT STDMETHODCALLTYPE factory_ActivateInstance( IActivationFactory *i
|
|||
return E_OUTOFMEMORY;
|
||||
|
||||
impl->IPropertySet_iface.lpVtbl = &propertyset_vtbl;
|
||||
impl->IObservableMap_HSTRING_IInspectable_iface.lpVtbl = &propertyset_IObservableMap_vtbl;
|
||||
impl->IMap_HSTRING_IInspectable_iface.lpVtbl = &propertyset_IMap_vtbl;
|
||||
impl->IIterable_IKeyValuePair_HSTRING_IInspectable_iface.lpVtbl = &iterable_kvpair_HSTRING_IInspectable_vtbl;
|
||||
impl->ref = 1;
|
||||
*instance = (IInspectable *)&impl->IPropertySet_iface;
|
||||
return S_OK;
|
||||
|
|
|
@ -77,7 +77,7 @@ static void test_IPropertySet(void)
|
|||
}
|
||||
|
||||
hr = IPropertySet_QueryInterface( propset, &IID_IMap_HSTRING_IInspectable, (void **)&map );
|
||||
todo_wine ok( SUCCEEDED( hr ), "QueryInterface failed, got %#lx\n", hr );
|
||||
ok( SUCCEEDED( hr ), "QueryInterface failed, got %#lx\n", hr );
|
||||
if (FAILED( hr ))
|
||||
{
|
||||
RoUninitialize();
|
||||
|
@ -87,11 +87,11 @@ static void test_IPropertySet(void)
|
|||
hr = IPropertySet_QueryInterface( propset, &IID_IObservableMap_HSTRING_IInspectable,
|
||||
(void *)&observable_map );
|
||||
IPropertySet_Release(propset);
|
||||
todo_wine ok(SUCCEEDED(hr), "QueryInterface failed, got %#lx\n", hr);
|
||||
ok(SUCCEEDED(hr), "QueryInterface failed, got %#lx\n", hr);
|
||||
|
||||
hr = IMap_HSTRING_IInspectable_QueryInterface( map, &IID_IIterable_IKeyValuePair_HSTRING_IInspectable,
|
||||
(void **)&iterable );
|
||||
todo_wine ok( SUCCEEDED( hr ), "QueryInterface failed, got %#lx\n", hr );
|
||||
ok( SUCCEEDED( hr ), "QueryInterface failed, got %#lx\n", hr );
|
||||
if (SUCCEEDED( hr ))
|
||||
{
|
||||
hr = IIterable_IKeyValuePair_HSTRING_IInspectable_First( iterable, &iterator );
|
||||
|
|
Loading…
Reference in a new issue