Alexandre Julliard wrote:
Jacek Caban jacek@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