Alexandre Julliard wrote:
Jacek Caban <ja...@codeweavers.com> writes:
@@ -84,6 +83,13 @@ static inline xmlnode *impl_from_IXMLDOMNode( IXMLDOMNode
*iface )
return (xmlnode *)((char*)iface - FIELD_OFFSET(xmlnode, lpVtbl));
}
+static inline IXMLDOMNode *_IXMLDOMNode_(xmlnode *This)
+{
+ return (IXMLDOMNode*)&This->lpVtbl;
+}
That wrapper doesn't follow any established naming convention,
I'm sure I saw it somewhere in Wine and I liked it. AFAICS there are no
object to interface cast wrappers in msxml3 (except for dispex.c, which
is copied from mshtml), so I thought I could introduce it here.
and doesn't seem quite necessary. The standard way is to simply cast to the
interface type.
I just feel that it's better to have a wrapper to avoid explicit casts
in the code and have vtbl logic separated from other code. I usually use
macros, but I know you don't like it, so I used an inline function here.
If you really want a wrapper it should be called
something like IXMLDOMNode_from_impl.
I will resend these patches without the wrapper.
Thanks,
Jacek