[PATCH 1/3] msxml3: Return xmlnode object from create_basic_node.

Jacek Caban jacek at codeweavers.com
Thu Aug 20 09:39:10 CDT 2009

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


More information about the wine-devel mailing list