Thanks for the review. Nikolay Sivov <nsivov(a)codeweavers.com> wrote:
dlls/ole32/moniker.h | 4 +- dlls/ole32/ole32.spec | 2 +- dlls/ole32/ole32_objidl.idl | 6 + dlls/ole32/oleproxy.c | 13 + dlls/ole32/pointermoniker.c | 531 +++++++++++++++++++++++++++++++++++- dlls/ole32/tests/moniker.c | 221 ++++++++++++++- include/objidl.idl | 5 +- 7 files changed, 776 insertions(+), 6 deletions(-)
Does not have to be in the same file either. This will avoid multiple *_impl_from_* helpers.
I recall that Alexandre prefers to add stuff to existing files if the scope and size keep it managable. I'd guess that's the case here.
+static HRESULT WINAPI ObjrefMonikerImpl_ParseDisplayName(IMoniker *iface, IBindCtx *pbc, + IMoniker *left, LPOLESTR name, ULONG *eaten, IMoniker **out) +{ + ObjrefMonikerImpl *moniker = objref_impl_from_IMoniker(iface); + HRESULT hr; + IParseDisplayName *pdn; + + TRACE("(%p,%p,%p,%p,%p,%p)\n", iface, pbc, left, name, eaten, out); + + if (left) + return MK_E_SYNTAX; + + if (!moniker->pObject) + return E_UNEXPECTED; + + hr = IUnknown_QueryInterface(moniker->pObject, &IID_IParseDisplayName, (void **)&pdn); + if (FAILED(hr)) + return hr; + + hr = IParseDisplayName_ParseDisplayName(pdn, pbc, name, eaten, out); + IParseDisplayName_Release(pdn); + + return hr; +} Any evidence of it actually doing this? In general, let's leave more stubs than copies of pointer moniker methods, unless it's clearly a right thing to do. For BindTo* methods that I suspect you actually need, calling then semi-stub is better.
Well, that's a fair point, and probably sending a stub implementation first might be a better starting point for an initial patch. -- Dmitry.