/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */

import "unknwn.idl";
import "objidl.idl";
import "oaidl.idl";

cpp_quote("#pragma push_macro(\"abort\")")
cpp_quote("#undef abort")
cpp_quote("#ifndef __IXMLDOMImplementation_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMImplementation_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMImplementation IXMLDOMImplementation;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMNode_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMNode_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMNode IXMLDOMNode;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMDocumentFragment_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMDocumentFragment_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMDocumentFragment IXMLDOMDocumentFragment;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMDocument_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMDocument_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMDocument IXMLDOMDocument;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMNodeList_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMNodeList_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMNodeList IXMLDOMNodeList;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMNamedNodeMap_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMNamedNodeMap_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMNamedNodeMap IXMLDOMNamedNodeMap;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMCharacterData_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMCharacterData_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMCharacterData IXMLDOMCharacterData;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMAttribute_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMAttribute_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMAttribute IXMLDOMAttribute;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMElement_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMElement_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMElement IXMLDOMElement;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMText_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMText_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMText IXMLDOMText;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMComment_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMComment_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMComment IXMLDOMComment;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMProcessingInstruction_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMProcessingInstruction_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMProcessingInstruction IXMLDOMProcessingInstruction;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMCDATASection_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMCDATASection_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMCDATASection IXMLDOMCDATASection;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMDocumentType_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMDocumentType_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMDocumentType IXMLDOMDocumentType;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMNotation_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMNotation_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMNotation IXMLDOMNotation;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMEntity_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMEntity_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMEntity IXMLDOMEntity;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMEntityReference_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMEntityReference_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMEntityReference IXMLDOMEntityReference;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMParseError_FWD_DEFINED__")
cpp_quote("#define __IXMLDOMParseError_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDOMParseError IXMLDOMParseError;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXTLRuntime_FWD_DEFINED__")
cpp_quote("#define __IXTLRuntime_FWD_DEFINED__")
cpp_quote("typedef struct IXTLRuntime IXTLRuntime;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __XMLDOMDocumentEvents_FWD_DEFINED__")
cpp_quote("#define __XMLDOMDocumentEvents_FWD_DEFINED__")
cpp_quote("typedef struct XMLDOMDocumentEvents XMLDOMDocumentEvents;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __DOMDocument_FWD_DEFINED__")
cpp_quote("#define __DOMDocument_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class DOMDocument DOMDocument;")
cpp_quote("#else")
cpp_quote("typedef struct DOMDocument DOMDocument;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __DOMFreeThreadedDocument_FWD_DEFINED__")
cpp_quote("#define __DOMFreeThreadedDocument_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class DOMFreeThreadedDocument DOMFreeThreadedDocument;")
cpp_quote("#else")
cpp_quote("typedef struct DOMFreeThreadedDocument DOMFreeThreadedDocument;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLHttpRequest_FWD_DEFINED__")
cpp_quote("#define __IXMLHttpRequest_FWD_DEFINED__")
cpp_quote("typedef struct IXMLHttpRequest IXMLHttpRequest;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __XMLHTTPRequest_FWD_DEFINED__")
cpp_quote("#define __XMLHTTPRequest_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class XMLHTTPRequest XMLHTTPRequest;")
cpp_quote("#else")
cpp_quote("typedef struct XMLHTTPRequest XMLHTTPRequest;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDSOControl_FWD_DEFINED__")
cpp_quote("#define __IXMLDSOControl_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDSOControl IXMLDSOControl;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __XMLDSOControl_FWD_DEFINED__")
cpp_quote("#define __XMLDSOControl_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class XMLDSOControl XMLDSOControl;")
cpp_quote("#else")
cpp_quote("typedef struct XMLDSOControl XMLDSOControl;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLElementCollection_FWD_DEFINED__")
cpp_quote("#define __IXMLElementCollection_FWD_DEFINED__")
cpp_quote("typedef struct IXMLElementCollection IXMLElementCollection;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDocument_FWD_DEFINED__")
cpp_quote("#define __IXMLDocument_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDocument IXMLDocument;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDocument2_FWD_DEFINED__")
cpp_quote("#define __IXMLDocument2_FWD_DEFINED__")
cpp_quote("typedef struct IXMLDocument2 IXMLDocument2;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLElement_FWD_DEFINED__")
cpp_quote("#define __IXMLElement_FWD_DEFINED__")
cpp_quote("typedef struct IXMLElement IXMLElement;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLElement2_FWD_DEFINED__")
cpp_quote("#define __IXMLElement2_FWD_DEFINED__")
cpp_quote("typedef struct IXMLElement2 IXMLElement2;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLAttribute_FWD_DEFINED__")
cpp_quote("#define __IXMLAttribute_FWD_DEFINED__")
cpp_quote("typedef struct IXMLAttribute IXMLAttribute;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLError_FWD_DEFINED__")
cpp_quote("#define __IXMLError_FWD_DEFINED__")
cpp_quote("typedef struct IXMLError IXMLError;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __XMLDocument_FWD_DEFINED__")
cpp_quote("#define __XMLDocument_FWD_DEFINED__")
cpp_quote("")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class XMLDocument XMLDocument;")
cpp_quote("#else")
cpp_quote("typedef struct XMLDocument XMLDocument;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("")
cpp_quote("  typedef struct _xml_error {")
cpp_quote("    unsigned int _nLine;")
cpp_quote("    BSTR _pchBuf;")
cpp_quote("    unsigned int _cchBuf;")
cpp_quote("    unsigned int _ich;")
cpp_quote("    BSTR _pszFound;")
cpp_quote("    BSTR _pszExpected;")
cpp_quote("    DWORD _reserved1;")
cpp_quote("    DWORD _reserved2;")
cpp_quote("  } XML_ERROR;")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_msxml_0000_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_msxml_0000_v0_0_s_ifspec;")
cpp_quote("")
cpp_quote("#ifndef __MSXML_LIBRARY_DEFINED__")
cpp_quote("#define __MSXML_LIBRARY_DEFINED__")
cpp_quote("")
cpp_quote("  typedef enum tagDOMNodeType {")
cpp_quote("    NODE_INVALID = 0,NODE_ELEMENT,NODE_ATTRIBUTE,NODE_TEXT,NODE_CDATA_SECTION,")
cpp_quote("    NODE_ENTITY_REFERENCE,NODE_ENTITY,NODE_PROCESSING_INSTRUCTION,NODE_COMMENT,")
cpp_quote("    NODE_DOCUMENT,NODE_DOCUMENT_TYPE,NODE_DOCUMENT_FRAGMENT,NODE_NOTATION")
cpp_quote("  } DOMNodeType;")
cpp_quote("")
cpp_quote("  typedef enum tagXMLEMEM_TYPE {")
cpp_quote("    XMLELEMTYPE_ELEMENT = 0,XMLELEMTYPE_TEXT,XMLELEMTYPE_COMMENT,XMLELEMTYPE_DOCUMENT,")
cpp_quote("    XMLELEMTYPE_DTD,XMLELEMTYPE_PI,XMLELEMTYPE_OTHER")
cpp_quote("  } XMLELEM_TYPE;")
cpp_quote("")
cpp_quote("  EXTERN_C const IID LIBID_MSXML;")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMImplementation_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMImplementation_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMImplementation;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMImplementation : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI hasFeature(BSTR feature,BSTR version,VARIANT_BOOL *hasFeature) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMImplementationVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMImplementation *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMImplementation *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMImplementation *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMImplementation *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMImplementation *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMImplementation *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMImplementation *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *hasFeature)(IXMLDOMImplementation *This,BSTR feature,BSTR version,VARIANT_BOOL *hasFeature);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMImplementationVtbl;")
cpp_quote("  struct IXMLDOMImplementation {")
cpp_quote("    CONST_VTBL struct IXMLDOMImplementationVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMImplementation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMImplementation_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMImplementation_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMImplementation_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMImplementation_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMImplementation_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMImplementation_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMImplementation_hasFeature(This,feature,version,hasFeature) (This)->lpVtbl->hasFeature(This,feature,version,hasFeature)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMImplementation_hasFeature_Proxy(IXMLDOMImplementation *This,BSTR feature,BSTR version,VARIANT_BOOL *hasFeature);")
cpp_quote("  void __RPC_STUB IXMLDOMImplementation_hasFeature_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMNode_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMNode_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMNode;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMNode : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_nodeName(BSTR *name) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_nodeValue(VARIANT *value) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_nodeValue(VARIANT value) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_nodeType(DOMNodeType *type) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_parentNode(IXMLDOMNode **parent) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_childNodes(IXMLDOMNodeList **childList) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_firstChild(IXMLDOMNode **firstChild) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_lastChild(IXMLDOMNode **lastChild) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_previousSibling(IXMLDOMNode **previousSibling) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_nextSibling(IXMLDOMNode **nextSibling) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_attributes(IXMLDOMNamedNodeMap **attributeMap) = 0;")
cpp_quote("    virtual HRESULT WINAPI insertBefore(IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild) = 0;")
cpp_quote("    virtual HRESULT WINAPI replaceChild(IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild) = 0;")
cpp_quote("    virtual HRESULT WINAPI removeChild(IXMLDOMNode *childNode,IXMLDOMNode **oldChild) = 0;")
cpp_quote("    virtual HRESULT WINAPI appendChild(IXMLDOMNode *newChild,IXMLDOMNode **outNewChild) = 0;")
cpp_quote("    virtual HRESULT WINAPI hasChildNodes(VARIANT_BOOL *hasChild) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_ownerDocument(IXMLDOMDocument **DOMDocument) = 0;")
cpp_quote("    virtual HRESULT WINAPI cloneNode(VARIANT_BOOL deep,IXMLDOMNode **cloneRoot) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_nodeTypeString(BSTR *nodeType) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_text(BSTR *text) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_text(BSTR text) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_specified(VARIANT_BOOL *isSpecified) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_definition(IXMLDOMNode **definitionNode) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_nodeTypedValue(VARIANT *typedValue) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_nodeTypedValue(VARIANT typedValue) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_dataType(VARIANT *dataTypeName) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_dataType(BSTR dataTypeName) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_xml(BSTR *xmlString) = 0;")
cpp_quote("    virtual HRESULT WINAPI transformNode(IXMLDOMNode *stylesheet,BSTR *xmlString) = 0;")
cpp_quote("    virtual HRESULT WINAPI selectNodes(BSTR queryString,IXMLDOMNodeList **resultList) = 0;")
cpp_quote("    virtual HRESULT WINAPI selectSingleNode(BSTR queryString,IXMLDOMNode **resultNode) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_parsed(VARIANT_BOOL *isParsed) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_namespaceURI(BSTR *namespaceURI) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_prefix(BSTR *prefixString) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_baseName(BSTR *nameString) = 0;")
cpp_quote("    virtual HRESULT WINAPI transformNodeToObject(IXMLDOMNode *stylesheet,VARIANT outputObject) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMNodeVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMNode *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMNode *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMNode *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMNode *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMNode *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMNode *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMNode *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMNode *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMNode *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMNode *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMNode *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMNode *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMNode *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMNode *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMNode *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMNode *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMNode *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMNode *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMNode *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMNode *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMNode *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMNode *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMNode *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMNode *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMNode *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMNode *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMNode *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMNode *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMNode *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMNode *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMNode *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMNode *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMNode *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMNode *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMNode *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMNode *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMNode *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMNode *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMNode *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMNode *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMNode *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMNodeVtbl;")
cpp_quote("  struct IXMLDOMNode {")
cpp_quote("    CONST_VTBL struct IXMLDOMNodeVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMNode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMNode_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMNode_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMNode_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMNode_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMNode_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMNode_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMNode_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMNode_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMNode_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMNode_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMNode_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMNode_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMNode_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMNode_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMNode_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMNode_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMNode_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMNode_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMNode_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMNode_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMNode_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMNode_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMNode_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMNode_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMNode_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMNode_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMNode_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMNode_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMNode_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMNode_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMNode_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMNode_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMNode_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMNode_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMNode_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMNode_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMNode_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMNode_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMNode_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMNode_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMNode_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMNode_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_nodeName_Proxy(IXMLDOMNode *This,BSTR *name);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_nodeName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_nodeValue_Proxy(IXMLDOMNode *This,VARIANT *value);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_nodeValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_put_nodeValue_Proxy(IXMLDOMNode *This,VARIANT value);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_put_nodeValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_nodeType_Proxy(IXMLDOMNode *This,DOMNodeType *type);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_nodeType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_parentNode_Proxy(IXMLDOMNode *This,IXMLDOMNode **parent);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_parentNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_childNodes_Proxy(IXMLDOMNode *This,IXMLDOMNodeList **childList);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_childNodes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_firstChild_Proxy(IXMLDOMNode *This,IXMLDOMNode **firstChild);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_firstChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_lastChild_Proxy(IXMLDOMNode *This,IXMLDOMNode **lastChild);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_lastChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_previousSibling_Proxy(IXMLDOMNode *This,IXMLDOMNode **previousSibling);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_previousSibling_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_nextSibling_Proxy(IXMLDOMNode *This,IXMLDOMNode **nextSibling);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_nextSibling_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_attributes_Proxy(IXMLDOMNode *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_insertBefore_Proxy(IXMLDOMNode *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_insertBefore_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_replaceChild_Proxy(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_replaceChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_removeChild_Proxy(IXMLDOMNode *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_removeChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_appendChild_Proxy(IXMLDOMNode *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_appendChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_hasChildNodes_Proxy(IXMLDOMNode *This,VARIANT_BOOL *hasChild);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_hasChildNodes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_ownerDocument_Proxy(IXMLDOMNode *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_ownerDocument_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_cloneNode_Proxy(IXMLDOMNode *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_cloneNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_nodeTypeString_Proxy(IXMLDOMNode *This,BSTR *nodeType);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_nodeTypeString_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_text_Proxy(IXMLDOMNode *This,BSTR *text);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_put_text_Proxy(IXMLDOMNode *This,BSTR text);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_put_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_specified_Proxy(IXMLDOMNode *This,VARIANT_BOOL *isSpecified);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_specified_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_definition_Proxy(IXMLDOMNode *This,IXMLDOMNode **definitionNode);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_definition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_nodeTypedValue_Proxy(IXMLDOMNode *This,VARIANT *typedValue);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_nodeTypedValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_put_nodeTypedValue_Proxy(IXMLDOMNode *This,VARIANT typedValue);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_put_nodeTypedValue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_dataType_Proxy(IXMLDOMNode *This,VARIANT *dataTypeName);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_dataType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_put_dataType_Proxy(IXMLDOMNode *This,BSTR dataTypeName);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_put_dataType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_xml_Proxy(IXMLDOMNode *This,BSTR *xmlString);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_xml_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_transformNode_Proxy(IXMLDOMNode *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_transformNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_selectNodes_Proxy(IXMLDOMNode *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_selectNodes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_selectSingleNode_Proxy(IXMLDOMNode *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_selectSingleNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_parsed_Proxy(IXMLDOMNode *This,VARIANT_BOOL *isParsed);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_parsed_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_namespaceURI_Proxy(IXMLDOMNode *This,BSTR *namespaceURI);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_namespaceURI_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_prefix_Proxy(IXMLDOMNode *This,BSTR *prefixString);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_prefix_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_get_baseName_Proxy(IXMLDOMNode *This,BSTR *nameString);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_get_baseName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNode_transformNodeToObject_Proxy(IXMLDOMNode *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("  void __RPC_STUB IXMLDOMNode_transformNodeToObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMDocumentFragment_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMDocumentFragment_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMDocumentFragment;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMDocumentFragment : public IXMLDOMNode {")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMDocumentFragmentVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMDocumentFragment *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMDocumentFragment *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMDocumentFragment *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMDocumentFragment *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMDocumentFragment *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMDocumentFragment *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMDocumentFragment *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMDocumentFragment *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMDocumentFragment *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMDocumentFragment *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMDocumentFragment *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMDocumentFragment *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMDocumentFragment *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMDocumentFragment *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMDocumentFragment *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMDocumentFragment *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMDocumentFragment *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMDocumentFragment *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMDocumentFragment *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMDocumentFragment *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMDocumentFragment *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMDocumentFragment *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMDocumentFragment *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMDocumentFragment *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMDocumentFragment *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMDocumentFragment *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMDocumentFragment *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMDocumentFragment *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMDocumentFragment *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMDocumentFragment *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMDocumentFragment *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMDocumentFragment *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMDocumentFragment *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMDocumentFragment *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMDocumentFragment *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMDocumentFragment *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMDocumentFragment *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMDocumentFragment *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMDocumentFragment *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMDocumentFragmentVtbl;")
cpp_quote("  struct IXMLDOMDocumentFragment {")
cpp_quote("    CONST_VTBL struct IXMLDOMDocumentFragmentVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMDocumentFragment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMDocumentFragment_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMDocumentFragment_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMDocumentFragment_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMDocumentFragment_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMDocumentFragment_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMDocumentFragment_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMDocumentFragment_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMDocumentFragment_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMDocumentFragment_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMDocumentFragment_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMDocumentFragment_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMDocumentFragment_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMDocumentFragment_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMDocumentFragment_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMDocumentFragment_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMDocumentFragment_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMDocumentFragment_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMDocumentFragment_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMDocumentFragment_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMDocumentFragment_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMDocumentFragment_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMDocumentFragment_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMDocumentFragment_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMDocumentFragment_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMDocumentFragment_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMDocumentFragment_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMDocumentFragment_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMDocumentFragment_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMDocumentFragment_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMDocumentFragment_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMDocumentFragment_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMDocumentFragment_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMDocumentFragment_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMDocumentFragment_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMDocumentFragment_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMDocumentFragment_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMDocumentFragment_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMDocumentFragment_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMDocumentFragment_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMDocumentFragment_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMDocumentFragment_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMDocumentFragment_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMDocument_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMDocument_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMDocument;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMDocument : public IXMLDOMNode {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_doctype(IXMLDOMDocumentType **documentType) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_implementation(IXMLDOMImplementation **impl) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_documentElement(IXMLDOMElement **DOMElement) = 0;")
cpp_quote("    virtual HRESULT WINAPI putref_documentElement(IXMLDOMElement *DOMElement) = 0;")
cpp_quote("    virtual HRESULT WINAPI createElement(BSTR tagName,IXMLDOMElement **element) = 0;")
cpp_quote("    virtual HRESULT WINAPI createDocumentFragment(IXMLDOMDocumentFragment **docFrag) = 0;")
cpp_quote("    virtual HRESULT WINAPI createTextNode(BSTR data,IXMLDOMText **text) = 0;")
cpp_quote("    virtual HRESULT WINAPI createComment(BSTR data,IXMLDOMComment **comment) = 0;")
cpp_quote("    virtual HRESULT WINAPI createCDATASection(BSTR data,IXMLDOMCDATASection **cdata) = 0;")
cpp_quote("    virtual HRESULT WINAPI createProcessingInstruction(BSTR target,BSTR data,IXMLDOMProcessingInstruction **pi) = 0;")
cpp_quote("    virtual HRESULT WINAPI createAttribute(BSTR name,IXMLDOMAttribute **attribute) = 0;")
cpp_quote("    virtual HRESULT WINAPI createEntityReference(BSTR name,IXMLDOMEntityReference **entityRef) = 0;")
cpp_quote("    virtual HRESULT WINAPI getElementsByTagName(BSTR tagName,IXMLDOMNodeList **resultList) = 0;")
cpp_quote("    virtual HRESULT WINAPI createNode(VARIANT Type,BSTR name,BSTR namespaceURI,IXMLDOMNode **node) = 0;")
cpp_quote("    virtual HRESULT WINAPI nodeFromID(BSTR idString,IXMLDOMNode **node) = 0;")
cpp_quote("    virtual HRESULT WINAPI load(VARIANT xmlSource,VARIANT_BOOL *isSuccessful) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_readyState(LONG *value) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_parseError(IXMLDOMParseError **errorObj) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_url(BSTR *urlString) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_async(VARIANT_BOOL *isAsync) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_async(VARIANT_BOOL isAsync) = 0;")
cpp_quote("    virtual HRESULT WINAPI abort(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI loadXML(BSTR bstrXML,VARIANT_BOOL *isSuccessful) = 0;")
cpp_quote("    virtual HRESULT WINAPI save(VARIANT destination) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_validateOnParse(VARIANT_BOOL *isValidating) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_validateOnParse(VARIANT_BOOL isValidating) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_resolveExternals(VARIANT_BOOL *isResolving) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_resolveExternals(VARIANT_BOOL isResolving) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_preserveWhiteSpace(VARIANT_BOOL *isPreserving) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_preserveWhiteSpace(VARIANT_BOOL isPreserving) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_onreadystatechange(VARIANT readystatechangeSink) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_ondataavailable(VARIANT ondataavailableSink) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_ontransformnode(VARIANT ontransformnodeSink) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMDocumentVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMDocument *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMDocument *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMDocument *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMDocument *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMDocument *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMDocument *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMDocument *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMDocument *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMDocument *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMDocument *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMDocument *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMDocument *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMDocument *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMDocument *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMDocument *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMDocument *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMDocument *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMDocument *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMDocument *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMDocument *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMDocument *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMDocument *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMDocument *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMDocument *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMDocument *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMDocument *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMDocument *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMDocument *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMDocument *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMDocument *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMDocument *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMDocument *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMDocument *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMDocument *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMDocument *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMDocument *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMDocument *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMDocument *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMDocument *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMDocument *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMDocument *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMDocument *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMDocument *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *get_doctype)(IXMLDOMDocument *This,IXMLDOMDocumentType **documentType);")
cpp_quote("      HRESULT (WINAPI *get_implementation)(IXMLDOMDocument *This,IXMLDOMImplementation **impl);")
cpp_quote("      HRESULT (WINAPI *get_documentElement)(IXMLDOMDocument *This,IXMLDOMElement **DOMElement);")
cpp_quote("      HRESULT (WINAPI *putref_documentElement)(IXMLDOMDocument *This,IXMLDOMElement *DOMElement);")
cpp_quote("      HRESULT (WINAPI *createElement)(IXMLDOMDocument *This,BSTR tagName,IXMLDOMElement **element);")
cpp_quote("      HRESULT (WINAPI *createDocumentFragment)(IXMLDOMDocument *This,IXMLDOMDocumentFragment **docFrag);")
cpp_quote("      HRESULT (WINAPI *createTextNode)(IXMLDOMDocument *This,BSTR data,IXMLDOMText **text);")
cpp_quote("      HRESULT (WINAPI *createComment)(IXMLDOMDocument *This,BSTR data,IXMLDOMComment **comment);")
cpp_quote("      HRESULT (WINAPI *createCDATASection)(IXMLDOMDocument *This,BSTR data,IXMLDOMCDATASection **cdata);")
cpp_quote("      HRESULT (WINAPI *createProcessingInstruction)(IXMLDOMDocument *This,BSTR target,BSTR data,IXMLDOMProcessingInstruction **pi);")
cpp_quote("      HRESULT (WINAPI *createAttribute)(IXMLDOMDocument *This,BSTR name,IXMLDOMAttribute **attribute);")
cpp_quote("      HRESULT (WINAPI *createEntityReference)(IXMLDOMDocument *This,BSTR name,IXMLDOMEntityReference **entityRef);")
cpp_quote("      HRESULT (WINAPI *getElementsByTagName)(IXMLDOMDocument *This,BSTR tagName,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *createNode)(IXMLDOMDocument *This,VARIANT Type,BSTR name,BSTR namespaceURI,IXMLDOMNode **node);")
cpp_quote("      HRESULT (WINAPI *nodeFromID)(IXMLDOMDocument *This,BSTR idString,IXMLDOMNode **node);")
cpp_quote("      HRESULT (WINAPI *load)(IXMLDOMDocument *This,VARIANT xmlSource,VARIANT_BOOL *isSuccessful);")
cpp_quote("      HRESULT (WINAPI *get_readyState)(IXMLDOMDocument *This,LONG *value);")
cpp_quote("      HRESULT (WINAPI *get_parseError)(IXMLDOMDocument *This,IXMLDOMParseError **errorObj);")
cpp_quote("      HRESULT (WINAPI *get_url)(IXMLDOMDocument *This,BSTR *urlString);")
cpp_quote("      HRESULT (WINAPI *get_async)(IXMLDOMDocument *This,VARIANT_BOOL *isAsync);")
cpp_quote("      HRESULT (WINAPI *put_async)(IXMLDOMDocument *This,VARIANT_BOOL isAsync);")
cpp_quote("      HRESULT (WINAPI *abort)(IXMLDOMDocument *This);")
cpp_quote("      HRESULT (WINAPI *loadXML)(IXMLDOMDocument *This,BSTR bstrXML,VARIANT_BOOL *isSuccessful);")
cpp_quote("      HRESULT (WINAPI *save)(IXMLDOMDocument *This,VARIANT destination);")
cpp_quote("      HRESULT (WINAPI *get_validateOnParse)(IXMLDOMDocument *This,VARIANT_BOOL *isValidating);")
cpp_quote("      HRESULT (WINAPI *put_validateOnParse)(IXMLDOMDocument *This,VARIANT_BOOL isValidating);")
cpp_quote("      HRESULT (WINAPI *get_resolveExternals)(IXMLDOMDocument *This,VARIANT_BOOL *isResolving);")
cpp_quote("      HRESULT (WINAPI *put_resolveExternals)(IXMLDOMDocument *This,VARIANT_BOOL isResolving);")
cpp_quote("      HRESULT (WINAPI *get_preserveWhiteSpace)(IXMLDOMDocument *This,VARIANT_BOOL *isPreserving);")
cpp_quote("      HRESULT (WINAPI *put_preserveWhiteSpace)(IXMLDOMDocument *This,VARIANT_BOOL isPreserving);")
cpp_quote("      HRESULT (WINAPI *put_onreadystatechange)(IXMLDOMDocument *This,VARIANT readystatechangeSink);")
cpp_quote("      HRESULT (WINAPI *put_ondataavailable)(IXMLDOMDocument *This,VARIANT ondataavailableSink);")
cpp_quote("      HRESULT (WINAPI *put_ontransformnode)(IXMLDOMDocument *This,VARIANT ontransformnodeSink);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMDocumentVtbl;")
cpp_quote("  struct IXMLDOMDocument {")
cpp_quote("    CONST_VTBL struct IXMLDOMDocumentVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMDocument_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMDocument_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMDocument_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMDocument_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMDocument_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMDocument_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMDocument_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMDocument_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMDocument_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMDocument_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMDocument_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMDocument_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMDocument_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMDocument_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMDocument_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMDocument_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMDocument_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMDocument_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMDocument_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMDocument_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMDocument_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMDocument_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMDocument_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMDocument_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMDocument_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMDocument_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMDocument_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMDocument_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMDocument_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMDocument_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMDocument_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMDocument_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMDocument_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMDocument_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMDocument_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMDocument_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMDocument_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMDocument_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMDocument_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMDocument_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMDocument_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMDocument_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMDocument_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXMLDOMDocument_get_doctype(This,documentType) (This)->lpVtbl->get_doctype(This,documentType)")
cpp_quote("#define IXMLDOMDocument_get_implementation(This,impl) (This)->lpVtbl->get_implementation(This,impl)")
cpp_quote("#define IXMLDOMDocument_get_documentElement(This,DOMElement) (This)->lpVtbl->get_documentElement(This,DOMElement)")
cpp_quote("#define IXMLDOMDocument_putref_documentElement(This,DOMElement) (This)->lpVtbl->putref_documentElement(This,DOMElement)")
cpp_quote("#define IXMLDOMDocument_createElement(This,tagName,element) (This)->lpVtbl->createElement(This,tagName,element)")
cpp_quote("#define IXMLDOMDocument_createDocumentFragment(This,docFrag) (This)->lpVtbl->createDocumentFragment(This,docFrag)")
cpp_quote("#define IXMLDOMDocument_createTextNode(This,data,text) (This)->lpVtbl->createTextNode(This,data,text)")
cpp_quote("#define IXMLDOMDocument_createComment(This,data,comment) (This)->lpVtbl->createComment(This,data,comment)")
cpp_quote("#define IXMLDOMDocument_createCDATASection(This,data,cdata) (This)->lpVtbl->createCDATASection(This,data,cdata)")
cpp_quote("#define IXMLDOMDocument_createProcessingInstruction(This,target,data,pi) (This)->lpVtbl->createProcessingInstruction(This,target,data,pi)")
cpp_quote("#define IXMLDOMDocument_createAttribute(This,name,attribute) (This)->lpVtbl->createAttribute(This,name,attribute)")
cpp_quote("#define IXMLDOMDocument_createEntityReference(This,name,entityRef) (This)->lpVtbl->createEntityReference(This,name,entityRef)")
cpp_quote("#define IXMLDOMDocument_getElementsByTagName(This,tagName,resultList) (This)->lpVtbl->getElementsByTagName(This,tagName,resultList)")
cpp_quote("#define IXMLDOMDocument_createNode(This,Type,name,namespaceURI,node) (This)->lpVtbl->createNode(This,Type,name,namespaceURI,node)")
cpp_quote("#define IXMLDOMDocument_nodeFromID(This,idString,node) (This)->lpVtbl->nodeFromID(This,idString,node)")
cpp_quote("#define IXMLDOMDocument_load(This,xmlSource,isSuccessful) (This)->lpVtbl->load(This,xmlSource,isSuccessful)")
cpp_quote("#define IXMLDOMDocument_get_readyState(This,value) (This)->lpVtbl->get_readyState(This,value)")
cpp_quote("#define IXMLDOMDocument_get_parseError(This,errorObj) (This)->lpVtbl->get_parseError(This,errorObj)")
cpp_quote("#define IXMLDOMDocument_get_url(This,urlString) (This)->lpVtbl->get_url(This,urlString)")
cpp_quote("#define IXMLDOMDocument_get_async(This,isAsync) (This)->lpVtbl->get_async(This,isAsync)")
cpp_quote("#define IXMLDOMDocument_put_async(This,isAsync) (This)->lpVtbl->put_async(This,isAsync)")
cpp_quote("#define IXMLDOMDocument_abort(This) (This)->lpVtbl->abort(This)")
cpp_quote("#define IXMLDOMDocument_loadXML(This,bstrXML,isSuccessful) (This)->lpVtbl->loadXML(This,bstrXML,isSuccessful)")
cpp_quote("#define IXMLDOMDocument_save(This,destination) (This)->lpVtbl->save(This,destination)")
cpp_quote("#define IXMLDOMDocument_get_validateOnParse(This,isValidating) (This)->lpVtbl->get_validateOnParse(This,isValidating)")
cpp_quote("#define IXMLDOMDocument_put_validateOnParse(This,isValidating) (This)->lpVtbl->put_validateOnParse(This,isValidating)")
cpp_quote("#define IXMLDOMDocument_get_resolveExternals(This,isResolving) (This)->lpVtbl->get_resolveExternals(This,isResolving)")
cpp_quote("#define IXMLDOMDocument_put_resolveExternals(This,isResolving) (This)->lpVtbl->put_resolveExternals(This,isResolving)")
cpp_quote("#define IXMLDOMDocument_get_preserveWhiteSpace(This,isPreserving) (This)->lpVtbl->get_preserveWhiteSpace(This,isPreserving)")
cpp_quote("#define IXMLDOMDocument_put_preserveWhiteSpace(This,isPreserving) (This)->lpVtbl->put_preserveWhiteSpace(This,isPreserving)")
cpp_quote("#define IXMLDOMDocument_put_onreadystatechange(This,readystatechangeSink) (This)->lpVtbl->put_onreadystatechange(This,readystatechangeSink)")
cpp_quote("#define IXMLDOMDocument_put_ondataavailable(This,ondataavailableSink) (This)->lpVtbl->put_ondataavailable(This,ondataavailableSink)")
cpp_quote("#define IXMLDOMDocument_put_ontransformnode(This,ontransformnodeSink) (This)->lpVtbl->put_ontransformnode(This,ontransformnodeSink)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_get_doctype_Proxy(IXMLDOMDocument *This,IXMLDOMDocumentType **documentType);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_get_doctype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_get_implementation_Proxy(IXMLDOMDocument *This,IXMLDOMImplementation **impl);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_get_implementation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_get_documentElement_Proxy(IXMLDOMDocument *This,IXMLDOMElement **DOMElement);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_get_documentElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_putref_documentElement_Proxy(IXMLDOMDocument *This,IXMLDOMElement *DOMElement);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_putref_documentElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_createElement_Proxy(IXMLDOMDocument *This,BSTR tagName,IXMLDOMElement **element);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_createElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_createDocumentFragment_Proxy(IXMLDOMDocument *This,IXMLDOMDocumentFragment **docFrag);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_createDocumentFragment_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_createTextNode_Proxy(IXMLDOMDocument *This,BSTR data,IXMLDOMText **text);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_createTextNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_createComment_Proxy(IXMLDOMDocument *This,BSTR data,IXMLDOMComment **comment);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_createComment_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_createCDATASection_Proxy(IXMLDOMDocument *This,BSTR data,IXMLDOMCDATASection **cdata);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_createCDATASection_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_createProcessingInstruction_Proxy(IXMLDOMDocument *This,BSTR target,BSTR data,IXMLDOMProcessingInstruction **pi);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_createProcessingInstruction_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_createAttribute_Proxy(IXMLDOMDocument *This,BSTR name,IXMLDOMAttribute **attribute);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_createAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_createEntityReference_Proxy(IXMLDOMDocument *This,BSTR name,IXMLDOMEntityReference **entityRef);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_createEntityReference_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_getElementsByTagName_Proxy(IXMLDOMDocument *This,BSTR tagName,IXMLDOMNodeList **resultList);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_getElementsByTagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_createNode_Proxy(IXMLDOMDocument *This,VARIANT Type,BSTR name,BSTR namespaceURI,IXMLDOMNode **node);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_createNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_nodeFromID_Proxy(IXMLDOMDocument *This,BSTR idString,IXMLDOMNode **node);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_nodeFromID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_load_Proxy(IXMLDOMDocument *This,VARIANT xmlSource,VARIANT_BOOL *isSuccessful);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_load_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_get_readyState_Proxy(IXMLDOMDocument *This,LONG *value);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_get_parseError_Proxy(IXMLDOMDocument *This,IXMLDOMParseError **errorObj);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_get_parseError_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_get_url_Proxy(IXMLDOMDocument *This,BSTR *urlString);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_get_url_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_get_async_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isAsync);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_get_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_put_async_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isAsync);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_put_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_abort_Proxy(IXMLDOMDocument *This);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_abort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_loadXML_Proxy(IXMLDOMDocument *This,BSTR bstrXML,VARIANT_BOOL *isSuccessful);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_loadXML_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_save_Proxy(IXMLDOMDocument *This,VARIANT destination);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_save_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_get_validateOnParse_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isValidating);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_get_validateOnParse_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_put_validateOnParse_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isValidating);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_put_validateOnParse_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_get_resolveExternals_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isResolving);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_get_resolveExternals_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_put_resolveExternals_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isResolving);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_put_resolveExternals_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_get_preserveWhiteSpace_Proxy(IXMLDOMDocument *This,VARIANT_BOOL *isPreserving);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_get_preserveWhiteSpace_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_put_preserveWhiteSpace_Proxy(IXMLDOMDocument *This,VARIANT_BOOL isPreserving);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_put_preserveWhiteSpace_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_put_onreadystatechange_Proxy(IXMLDOMDocument *This,VARIANT readystatechangeSink);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_put_onreadystatechange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_put_ondataavailable_Proxy(IXMLDOMDocument *This,VARIANT ondataavailableSink);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_put_ondataavailable_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocument_put_ontransformnode_Proxy(IXMLDOMDocument *This,VARIANT ontransformnodeSink);")
cpp_quote("  void __RPC_STUB IXMLDOMDocument_put_ontransformnode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMNodeList_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMNodeList_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMNodeList;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMNodeList : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_item(LONG index,IXMLDOMNode **listItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_length(LONG *listLength) = 0;")
cpp_quote("    virtual HRESULT WINAPI nextNode(IXMLDOMNode **nextItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI reset(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI get__newEnum(IUnknown **ppUnk) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMNodeListVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMNodeList *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMNodeList *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMNodeList *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMNodeList *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMNodeList *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMNodeList *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMNodeList *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_item)(IXMLDOMNodeList *This,LONG index,IXMLDOMNode **listItem);")
cpp_quote("      HRESULT (WINAPI *get_length)(IXMLDOMNodeList *This,LONG *listLength);")
cpp_quote("      HRESULT (WINAPI *nextNode)(IXMLDOMNodeList *This,IXMLDOMNode **nextItem);")
cpp_quote("      HRESULT (WINAPI *reset)(IXMLDOMNodeList *This);")
cpp_quote("      HRESULT (WINAPI *get__newEnum)(IXMLDOMNodeList *This,IUnknown **ppUnk);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMNodeListVtbl;")
cpp_quote("  struct IXMLDOMNodeList {")
cpp_quote("    CONST_VTBL struct IXMLDOMNodeListVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMNodeList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMNodeList_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMNodeList_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMNodeList_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMNodeList_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMNodeList_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMNodeList_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMNodeList_get_item(This,index,listItem) (This)->lpVtbl->get_item(This,index,listItem)")
cpp_quote("#define IXMLDOMNodeList_get_length(This,listLength) (This)->lpVtbl->get_length(This,listLength)")
cpp_quote("#define IXMLDOMNodeList_nextNode(This,nextItem) (This)->lpVtbl->nextNode(This,nextItem)")
cpp_quote("#define IXMLDOMNodeList_reset(This) (This)->lpVtbl->reset(This)")
cpp_quote("#define IXMLDOMNodeList_get__newEnum(This,ppUnk) (This)->lpVtbl->get__newEnum(This,ppUnk)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMNodeList_get_item_Proxy(IXMLDOMNodeList *This,LONG index,IXMLDOMNode **listItem);")
cpp_quote("  void __RPC_STUB IXMLDOMNodeList_get_item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNodeList_get_length_Proxy(IXMLDOMNodeList *This,LONG *listLength);")
cpp_quote("  void __RPC_STUB IXMLDOMNodeList_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNodeList_nextNode_Proxy(IXMLDOMNodeList *This,IXMLDOMNode **nextItem);")
cpp_quote("  void __RPC_STUB IXMLDOMNodeList_nextNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNodeList_reset_Proxy(IXMLDOMNodeList *This);")
cpp_quote("  void __RPC_STUB IXMLDOMNodeList_reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNodeList_get__newEnum_Proxy(IXMLDOMNodeList *This,IUnknown **ppUnk);")
cpp_quote("  void __RPC_STUB IXMLDOMNodeList_get__newEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMNamedNodeMap_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMNamedNodeMap_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMNamedNodeMap;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMNamedNodeMap : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI getNamedItem(BSTR name,IXMLDOMNode **namedItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI setNamedItem(IXMLDOMNode *newItem,IXMLDOMNode **nameItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI removeNamedItem(BSTR name,IXMLDOMNode **namedItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_item(LONG index,IXMLDOMNode **listItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_length(LONG *listLength) = 0;")
cpp_quote("    virtual HRESULT WINAPI getQualifiedItem(BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI removeQualifiedItem(BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI nextNode(IXMLDOMNode **nextItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI reset(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI get__newEnum(IUnknown **ppUnk) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMNamedNodeMapVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMNamedNodeMap *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMNamedNodeMap *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMNamedNodeMap *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMNamedNodeMap *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMNamedNodeMap *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMNamedNodeMap *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMNamedNodeMap *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *getNamedItem)(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);")
cpp_quote("      HRESULT (WINAPI *setNamedItem)(IXMLDOMNamedNodeMap *This,IXMLDOMNode *newItem,IXMLDOMNode **nameItem);")
cpp_quote("      HRESULT (WINAPI *removeNamedItem)(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);")
cpp_quote("      HRESULT (WINAPI *get_item)(IXMLDOMNamedNodeMap *This,LONG index,IXMLDOMNode **listItem);")
cpp_quote("      HRESULT (WINAPI *get_length)(IXMLDOMNamedNodeMap *This,LONG *listLength);")
cpp_quote("      HRESULT (WINAPI *getQualifiedItem)(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);")
cpp_quote("      HRESULT (WINAPI *removeQualifiedItem)(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);")
cpp_quote("      HRESULT (WINAPI *nextNode)(IXMLDOMNamedNodeMap *This,IXMLDOMNode **nextItem);")
cpp_quote("      HRESULT (WINAPI *reset)(IXMLDOMNamedNodeMap *This);")
cpp_quote("      HRESULT (WINAPI *get__newEnum)(IXMLDOMNamedNodeMap *This,IUnknown **ppUnk);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMNamedNodeMapVtbl;")
cpp_quote("  struct IXMLDOMNamedNodeMap {")
cpp_quote("    CONST_VTBL struct IXMLDOMNamedNodeMapVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMNamedNodeMap_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMNamedNodeMap_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMNamedNodeMap_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMNamedNodeMap_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMNamedNodeMap_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMNamedNodeMap_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMNamedNodeMap_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMNamedNodeMap_getNamedItem(This,name,namedItem) (This)->lpVtbl->getNamedItem(This,name,namedItem)")
cpp_quote("#define IXMLDOMNamedNodeMap_setNamedItem(This,newItem,nameItem) (This)->lpVtbl->setNamedItem(This,newItem,nameItem)")
cpp_quote("#define IXMLDOMNamedNodeMap_removeNamedItem(This,name,namedItem) (This)->lpVtbl->removeNamedItem(This,name,namedItem)")
cpp_quote("#define IXMLDOMNamedNodeMap_get_item(This,index,listItem) (This)->lpVtbl->get_item(This,index,listItem)")
cpp_quote("#define IXMLDOMNamedNodeMap_get_length(This,listLength) (This)->lpVtbl->get_length(This,listLength)")
cpp_quote("#define IXMLDOMNamedNodeMap_getQualifiedItem(This,baseName,namespaceURI,qualifiedItem) (This)->lpVtbl->getQualifiedItem(This,baseName,namespaceURI,qualifiedItem)")
cpp_quote("#define IXMLDOMNamedNodeMap_removeQualifiedItem(This,baseName,namespaceURI,qualifiedItem) (This)->lpVtbl->removeQualifiedItem(This,baseName,namespaceURI,qualifiedItem)")
cpp_quote("#define IXMLDOMNamedNodeMap_nextNode(This,nextItem) (This)->lpVtbl->nextNode(This,nextItem)")
cpp_quote("#define IXMLDOMNamedNodeMap_reset(This) (This)->lpVtbl->reset(This)")
cpp_quote("#define IXMLDOMNamedNodeMap_get__newEnum(This,ppUnk) (This)->lpVtbl->get__newEnum(This,ppUnk)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMNamedNodeMap_getNamedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);")
cpp_quote("  void __RPC_STUB IXMLDOMNamedNodeMap_getNamedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNamedNodeMap_setNamedItem_Proxy(IXMLDOMNamedNodeMap *This,IXMLDOMNode *newItem,IXMLDOMNode **nameItem);")
cpp_quote("  void __RPC_STUB IXMLDOMNamedNodeMap_setNamedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNamedNodeMap_removeNamedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR name,IXMLDOMNode **namedItem);")
cpp_quote("  void __RPC_STUB IXMLDOMNamedNodeMap_removeNamedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNamedNodeMap_get_item_Proxy(IXMLDOMNamedNodeMap *This,LONG index,IXMLDOMNode **listItem);")
cpp_quote("  void __RPC_STUB IXMLDOMNamedNodeMap_get_item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNamedNodeMap_get_length_Proxy(IXMLDOMNamedNodeMap *This,LONG *listLength);")
cpp_quote("  void __RPC_STUB IXMLDOMNamedNodeMap_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNamedNodeMap_getQualifiedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);")
cpp_quote("  void __RPC_STUB IXMLDOMNamedNodeMap_getQualifiedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNamedNodeMap_removeQualifiedItem_Proxy(IXMLDOMNamedNodeMap *This,BSTR baseName,BSTR namespaceURI,IXMLDOMNode **qualifiedItem);")
cpp_quote("  void __RPC_STUB IXMLDOMNamedNodeMap_removeQualifiedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNamedNodeMap_nextNode_Proxy(IXMLDOMNamedNodeMap *This,IXMLDOMNode **nextItem);")
cpp_quote("  void __RPC_STUB IXMLDOMNamedNodeMap_nextNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNamedNodeMap_reset_Proxy(IXMLDOMNamedNodeMap *This);")
cpp_quote("  void __RPC_STUB IXMLDOMNamedNodeMap_reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNamedNodeMap_get__newEnum_Proxy(IXMLDOMNamedNodeMap *This,IUnknown **ppUnk);")
cpp_quote("  void __RPC_STUB IXMLDOMNamedNodeMap_get__newEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMCharacterData_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMCharacterData_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMCharacterData;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMCharacterData : public IXMLDOMNode {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_data(BSTR *data) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_data(BSTR data) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_length(LONG *dataLength) = 0;")
cpp_quote("    virtual HRESULT WINAPI substringData(LONG offset,LONG count,BSTR *data) = 0;")
cpp_quote("    virtual HRESULT WINAPI appendData(BSTR data) = 0;")
cpp_quote("    virtual HRESULT WINAPI insertData(LONG offset,BSTR data) = 0;")
cpp_quote("    virtual HRESULT WINAPI deleteData(LONG offset,LONG count) = 0;")
cpp_quote("    virtual HRESULT WINAPI replaceData(LONG offset,LONG count,BSTR data) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMCharacterDataVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMCharacterData *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMCharacterData *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMCharacterData *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMCharacterData *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMCharacterData *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMCharacterData *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMCharacterData *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMCharacterData *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMCharacterData *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMCharacterData *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMCharacterData *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMCharacterData *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMCharacterData *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMCharacterData *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMCharacterData *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMCharacterData *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMCharacterData *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMCharacterData *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMCharacterData *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMCharacterData *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMCharacterData *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMCharacterData *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMCharacterData *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMCharacterData *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMCharacterData *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMCharacterData *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMCharacterData *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMCharacterData *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMCharacterData *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMCharacterData *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMCharacterData *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMCharacterData *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMCharacterData *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMCharacterData *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMCharacterData *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMCharacterData *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMCharacterData *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMCharacterData *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMCharacterData *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMCharacterData *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMCharacterData *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMCharacterData *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMCharacterData *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *get_data)(IXMLDOMCharacterData *This,BSTR *data);")
cpp_quote("      HRESULT (WINAPI *put_data)(IXMLDOMCharacterData *This,BSTR data);")
cpp_quote("      HRESULT (WINAPI *get_length)(IXMLDOMCharacterData *This,LONG *dataLength);")
cpp_quote("      HRESULT (WINAPI *substringData)(IXMLDOMCharacterData *This,LONG offset,LONG count,BSTR *data);")
cpp_quote("      HRESULT (WINAPI *appendData)(IXMLDOMCharacterData *This,BSTR data);")
cpp_quote("      HRESULT (WINAPI *insertData)(IXMLDOMCharacterData *This,LONG offset,BSTR data);")
cpp_quote("      HRESULT (WINAPI *deleteData)(IXMLDOMCharacterData *This,LONG offset,LONG count);")
cpp_quote("      HRESULT (WINAPI *replaceData)(IXMLDOMCharacterData *This,LONG offset,LONG count,BSTR data);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMCharacterDataVtbl;")
cpp_quote("  struct IXMLDOMCharacterData {")
cpp_quote("    CONST_VTBL struct IXMLDOMCharacterDataVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMCharacterData_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMCharacterData_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMCharacterData_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMCharacterData_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMCharacterData_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMCharacterData_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMCharacterData_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMCharacterData_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMCharacterData_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMCharacterData_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMCharacterData_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMCharacterData_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMCharacterData_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMCharacterData_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMCharacterData_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMCharacterData_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMCharacterData_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMCharacterData_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMCharacterData_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMCharacterData_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMCharacterData_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMCharacterData_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMCharacterData_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMCharacterData_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMCharacterData_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMCharacterData_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMCharacterData_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMCharacterData_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMCharacterData_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMCharacterData_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMCharacterData_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMCharacterData_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMCharacterData_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMCharacterData_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMCharacterData_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMCharacterData_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMCharacterData_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMCharacterData_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMCharacterData_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMCharacterData_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMCharacterData_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMCharacterData_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMCharacterData_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXMLDOMCharacterData_get_data(This,data) (This)->lpVtbl->get_data(This,data)")
cpp_quote("#define IXMLDOMCharacterData_put_data(This,data) (This)->lpVtbl->put_data(This,data)")
cpp_quote("#define IXMLDOMCharacterData_get_length(This,dataLength) (This)->lpVtbl->get_length(This,dataLength)")
cpp_quote("#define IXMLDOMCharacterData_substringData(This,offset,count,data) (This)->lpVtbl->substringData(This,offset,count,data)")
cpp_quote("#define IXMLDOMCharacterData_appendData(This,data) (This)->lpVtbl->appendData(This,data)")
cpp_quote("#define IXMLDOMCharacterData_insertData(This,offset,data) (This)->lpVtbl->insertData(This,offset,data)")
cpp_quote("#define IXMLDOMCharacterData_deleteData(This,offset,count) (This)->lpVtbl->deleteData(This,offset,count)")
cpp_quote("#define IXMLDOMCharacterData_replaceData(This,offset,count,data) (This)->lpVtbl->replaceData(This,offset,count,data)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMCharacterData_get_data_Proxy(IXMLDOMCharacterData *This,BSTR *data);")
cpp_quote("  void __RPC_STUB IXMLDOMCharacterData_get_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMCharacterData_put_data_Proxy(IXMLDOMCharacterData *This,BSTR data);")
cpp_quote("  void __RPC_STUB IXMLDOMCharacterData_put_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMCharacterData_get_length_Proxy(IXMLDOMCharacterData *This,LONG *dataLength);")
cpp_quote("  void __RPC_STUB IXMLDOMCharacterData_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMCharacterData_substringData_Proxy(IXMLDOMCharacterData *This,LONG offset,LONG count,BSTR *data);")
cpp_quote("  void __RPC_STUB IXMLDOMCharacterData_substringData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMCharacterData_appendData_Proxy(IXMLDOMCharacterData *This,BSTR data);")
cpp_quote("  void __RPC_STUB IXMLDOMCharacterData_appendData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMCharacterData_insertData_Proxy(IXMLDOMCharacterData *This,LONG offset,BSTR data);")
cpp_quote("  void __RPC_STUB IXMLDOMCharacterData_insertData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMCharacterData_deleteData_Proxy(IXMLDOMCharacterData *This,LONG offset,LONG count);")
cpp_quote("  void __RPC_STUB IXMLDOMCharacterData_deleteData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMCharacterData_replaceData_Proxy(IXMLDOMCharacterData *This,LONG offset,LONG count,BSTR data);")
cpp_quote("  void __RPC_STUB IXMLDOMCharacterData_replaceData_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMAttribute_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMAttribute_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMAttribute;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMAttribute : public IXMLDOMNode {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_name(BSTR *attributeName) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_value(VARIANT *attributeValue) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_value(VARIANT attributeValue) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMAttributeVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMAttribute *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMAttribute *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMAttribute *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMAttribute *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMAttribute *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMAttribute *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMAttribute *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMAttribute *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMAttribute *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMAttribute *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMAttribute *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMAttribute *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMAttribute *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMAttribute *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMAttribute *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMAttribute *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMAttribute *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMAttribute *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMAttribute *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMAttribute *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMAttribute *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMAttribute *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMAttribute *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMAttribute *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMAttribute *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMAttribute *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMAttribute *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMAttribute *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMAttribute *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMAttribute *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMAttribute *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMAttribute *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMAttribute *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMAttribute *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMAttribute *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMAttribute *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMAttribute *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMAttribute *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMAttribute *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMAttribute *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMAttribute *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMAttribute *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMAttribute *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *get_name)(IXMLDOMAttribute *This,BSTR *attributeName);")
cpp_quote("      HRESULT (WINAPI *get_value)(IXMLDOMAttribute *This,VARIANT *attributeValue);")
cpp_quote("      HRESULT (WINAPI *put_value)(IXMLDOMAttribute *This,VARIANT attributeValue);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMAttributeVtbl;")
cpp_quote("  struct IXMLDOMAttribute {")
cpp_quote("    CONST_VTBL struct IXMLDOMAttributeVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMAttribute_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMAttribute_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMAttribute_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMAttribute_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMAttribute_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMAttribute_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMAttribute_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMAttribute_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMAttribute_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMAttribute_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMAttribute_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMAttribute_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMAttribute_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMAttribute_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMAttribute_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMAttribute_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMAttribute_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMAttribute_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMAttribute_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMAttribute_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMAttribute_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMAttribute_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMAttribute_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMAttribute_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMAttribute_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMAttribute_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMAttribute_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMAttribute_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMAttribute_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMAttribute_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMAttribute_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMAttribute_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMAttribute_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMAttribute_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMAttribute_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMAttribute_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMAttribute_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMAttribute_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMAttribute_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMAttribute_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMAttribute_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMAttribute_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMAttribute_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXMLDOMAttribute_get_name(This,attributeName) (This)->lpVtbl->get_name(This,attributeName)")
cpp_quote("#define IXMLDOMAttribute_get_value(This,attributeValue) (This)->lpVtbl->get_value(This,attributeValue)")
cpp_quote("#define IXMLDOMAttribute_put_value(This,attributeValue) (This)->lpVtbl->put_value(This,attributeValue)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMAttribute_get_name_Proxy(IXMLDOMAttribute *This,BSTR *attributeName);")
cpp_quote("  void __RPC_STUB IXMLDOMAttribute_get_name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMAttribute_get_value_Proxy(IXMLDOMAttribute *This,VARIANT *attributeValue);")
cpp_quote("  void __RPC_STUB IXMLDOMAttribute_get_value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMAttribute_put_value_Proxy(IXMLDOMAttribute *This,VARIANT attributeValue);")
cpp_quote("  void __RPC_STUB IXMLDOMAttribute_put_value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMElement_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMElement_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMElement;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMElement : public IXMLDOMNode {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_tagName(BSTR *tagName) = 0;")
cpp_quote("    virtual HRESULT WINAPI getAttribute(BSTR name,VARIANT *value) = 0;")
cpp_quote("    virtual HRESULT WINAPI setAttribute(BSTR name,VARIANT value) = 0;")
cpp_quote("    virtual HRESULT WINAPI removeAttribute(BSTR name) = 0;")
cpp_quote("    virtual HRESULT WINAPI getAttributeNode(BSTR name,IXMLDOMAttribute **attributeNode) = 0;")
cpp_quote("    virtual HRESULT WINAPI setAttributeNode(IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode) = 0;")
cpp_quote("    virtual HRESULT WINAPI removeAttributeNode(IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode) = 0;")
cpp_quote("    virtual HRESULT WINAPI getElementsByTagName(BSTR tagName,IXMLDOMNodeList **resultList) = 0;")
cpp_quote("    virtual HRESULT WINAPI normalize(void) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMElementVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMElement *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMElement *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMElement *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMElement *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMElement *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMElement *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMElement *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMElement *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMElement *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMElement *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMElement *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMElement *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMElement *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMElement *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMElement *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMElement *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMElement *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMElement *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMElement *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMElement *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMElement *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMElement *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMElement *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMElement *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMElement *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMElement *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMElement *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMElement *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMElement *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMElement *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMElement *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMElement *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMElement *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMElement *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMElement *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMElement *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMElement *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMElement *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMElement *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMElement *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMElement *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMElement *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMElement *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *get_tagName)(IXMLDOMElement *This,BSTR *tagName);")
cpp_quote("      HRESULT (WINAPI *getAttribute)(IXMLDOMElement *This,BSTR name,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *setAttribute)(IXMLDOMElement *This,BSTR name,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *removeAttribute)(IXMLDOMElement *This,BSTR name);")
cpp_quote("      HRESULT (WINAPI *getAttributeNode)(IXMLDOMElement *This,BSTR name,IXMLDOMAttribute **attributeNode);")
cpp_quote("      HRESULT (WINAPI *setAttributeNode)(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);")
cpp_quote("      HRESULT (WINAPI *removeAttributeNode)(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);")
cpp_quote("      HRESULT (WINAPI *getElementsByTagName)(IXMLDOMElement *This,BSTR tagName,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *normalize)(IXMLDOMElement *This);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMElementVtbl;")
cpp_quote("  struct IXMLDOMElement {")
cpp_quote("    CONST_VTBL struct IXMLDOMElementVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMElement_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMElement_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMElement_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMElement_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMElement_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMElement_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMElement_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMElement_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMElement_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMElement_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMElement_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMElement_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMElement_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMElement_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMElement_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMElement_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMElement_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMElement_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMElement_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMElement_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMElement_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMElement_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMElement_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMElement_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMElement_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMElement_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMElement_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMElement_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMElement_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMElement_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMElement_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMElement_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMElement_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMElement_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMElement_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMElement_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMElement_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMElement_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMElement_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMElement_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMElement_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMElement_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMElement_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXMLDOMElement_get_tagName(This,tagName) (This)->lpVtbl->get_tagName(This,tagName)")
cpp_quote("#define IXMLDOMElement_getAttribute(This,name,value) (This)->lpVtbl->getAttribute(This,name,value)")
cpp_quote("#define IXMLDOMElement_setAttribute(This,name,value) (This)->lpVtbl->setAttribute(This,name,value)")
cpp_quote("#define IXMLDOMElement_removeAttribute(This,name) (This)->lpVtbl->removeAttribute(This,name)")
cpp_quote("#define IXMLDOMElement_getAttributeNode(This,name,attributeNode) (This)->lpVtbl->getAttributeNode(This,name,attributeNode)")
cpp_quote("#define IXMLDOMElement_setAttributeNode(This,DOMAttribute,attributeNode) (This)->lpVtbl->setAttributeNode(This,DOMAttribute,attributeNode)")
cpp_quote("#define IXMLDOMElement_removeAttributeNode(This,DOMAttribute,attributeNode) (This)->lpVtbl->removeAttributeNode(This,DOMAttribute,attributeNode)")
cpp_quote("#define IXMLDOMElement_getElementsByTagName(This,tagName,resultList) (This)->lpVtbl->getElementsByTagName(This,tagName,resultList)")
cpp_quote("#define IXMLDOMElement_normalize(This) (This)->lpVtbl->normalize(This)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMElement_get_tagName_Proxy(IXMLDOMElement *This,BSTR *tagName);")
cpp_quote("  void __RPC_STUB IXMLDOMElement_get_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMElement_getAttribute_Proxy(IXMLDOMElement *This,BSTR name,VARIANT *value);")
cpp_quote("  void __RPC_STUB IXMLDOMElement_getAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMElement_setAttribute_Proxy(IXMLDOMElement *This,BSTR name,VARIANT value);")
cpp_quote("  void __RPC_STUB IXMLDOMElement_setAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMElement_removeAttribute_Proxy(IXMLDOMElement *This,BSTR name);")
cpp_quote("  void __RPC_STUB IXMLDOMElement_removeAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMElement_getAttributeNode_Proxy(IXMLDOMElement *This,BSTR name,IXMLDOMAttribute **attributeNode);")
cpp_quote("  void __RPC_STUB IXMLDOMElement_getAttributeNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMElement_setAttributeNode_Proxy(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);")
cpp_quote("  void __RPC_STUB IXMLDOMElement_setAttributeNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMElement_removeAttributeNode_Proxy(IXMLDOMElement *This,IXMLDOMAttribute *DOMAttribute,IXMLDOMAttribute **attributeNode);")
cpp_quote("  void __RPC_STUB IXMLDOMElement_removeAttributeNode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMElement_getElementsByTagName_Proxy(IXMLDOMElement *This,BSTR tagName,IXMLDOMNodeList **resultList);")
cpp_quote("  void __RPC_STUB IXMLDOMElement_getElementsByTagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMElement_normalize_Proxy(IXMLDOMElement *This);")
cpp_quote("  void __RPC_STUB IXMLDOMElement_normalize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMText_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMText_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMText;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMText : public IXMLDOMCharacterData {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI splitText(LONG offset,IXMLDOMText **rightHandTextNode) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMTextVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMText *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMText *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMText *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMText *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMText *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMText *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMText *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMText *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMText *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMText *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMText *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMText *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMText *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMText *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMText *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMText *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMText *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMText *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMText *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMText *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMText *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMText *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMText *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMText *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMText *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMText *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMText *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMText *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMText *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMText *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMText *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMText *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMText *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMText *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMText *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMText *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMText *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMText *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMText *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMText *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMText *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMText *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMText *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *get_data)(IXMLDOMText *This,BSTR *data);")
cpp_quote("      HRESULT (WINAPI *put_data)(IXMLDOMText *This,BSTR data);")
cpp_quote("      HRESULT (WINAPI *get_length)(IXMLDOMText *This,LONG *dataLength);")
cpp_quote("      HRESULT (WINAPI *substringData)(IXMLDOMText *This,LONG offset,LONG count,BSTR *data);")
cpp_quote("      HRESULT (WINAPI *appendData)(IXMLDOMText *This,BSTR data);")
cpp_quote("      HRESULT (WINAPI *insertData)(IXMLDOMText *This,LONG offset,BSTR data);")
cpp_quote("      HRESULT (WINAPI *deleteData)(IXMLDOMText *This,LONG offset,LONG count);")
cpp_quote("      HRESULT (WINAPI *replaceData)(IXMLDOMText *This,LONG offset,LONG count,BSTR data);")
cpp_quote("      HRESULT (WINAPI *splitText)(IXMLDOMText *This,LONG offset,IXMLDOMText **rightHandTextNode);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMTextVtbl;")
cpp_quote("  struct IXMLDOMText {")
cpp_quote("    CONST_VTBL struct IXMLDOMTextVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMText_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMText_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMText_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMText_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMText_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMText_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMText_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMText_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMText_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMText_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMText_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMText_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMText_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMText_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMText_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMText_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMText_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMText_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMText_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMText_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMText_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMText_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMText_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMText_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMText_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMText_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMText_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMText_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMText_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMText_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMText_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMText_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMText_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMText_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMText_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMText_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMText_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMText_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMText_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMText_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMText_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMText_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMText_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXMLDOMText_get_data(This,data) (This)->lpVtbl->get_data(This,data)")
cpp_quote("#define IXMLDOMText_put_data(This,data) (This)->lpVtbl->put_data(This,data)")
cpp_quote("#define IXMLDOMText_get_length(This,dataLength) (This)->lpVtbl->get_length(This,dataLength)")
cpp_quote("#define IXMLDOMText_substringData(This,offset,count,data) (This)->lpVtbl->substringData(This,offset,count,data)")
cpp_quote("#define IXMLDOMText_appendData(This,data) (This)->lpVtbl->appendData(This,data)")
cpp_quote("#define IXMLDOMText_insertData(This,offset,data) (This)->lpVtbl->insertData(This,offset,data)")
cpp_quote("#define IXMLDOMText_deleteData(This,offset,count) (This)->lpVtbl->deleteData(This,offset,count)")
cpp_quote("#define IXMLDOMText_replaceData(This,offset,count,data) (This)->lpVtbl->replaceData(This,offset,count,data)")
cpp_quote("#define IXMLDOMText_splitText(This,offset,rightHandTextNode) (This)->lpVtbl->splitText(This,offset,rightHandTextNode)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMText_splitText_Proxy(IXMLDOMText *This,LONG offset,IXMLDOMText **rightHandTextNode);")
cpp_quote("  void __RPC_STUB IXMLDOMText_splitText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMComment_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMComment_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMComment;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMComment : public IXMLDOMCharacterData {")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMCommentVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMComment *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMComment *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMComment *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMComment *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMComment *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMComment *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMComment *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMComment *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMComment *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMComment *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMComment *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMComment *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMComment *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMComment *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMComment *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMComment *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMComment *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMComment *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMComment *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMComment *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMComment *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMComment *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMComment *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMComment *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMComment *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMComment *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMComment *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMComment *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMComment *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMComment *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMComment *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMComment *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMComment *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMComment *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMComment *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMComment *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMComment *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMComment *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMComment *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMComment *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMComment *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMComment *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMComment *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *get_data)(IXMLDOMComment *This,BSTR *data);")
cpp_quote("      HRESULT (WINAPI *put_data)(IXMLDOMComment *This,BSTR data);")
cpp_quote("      HRESULT (WINAPI *get_length)(IXMLDOMComment *This,LONG *dataLength);")
cpp_quote("      HRESULT (WINAPI *substringData)(IXMLDOMComment *This,LONG offset,LONG count,BSTR *data);")
cpp_quote("      HRESULT (WINAPI *appendData)(IXMLDOMComment *This,BSTR data);")
cpp_quote("      HRESULT (WINAPI *insertData)(IXMLDOMComment *This,LONG offset,BSTR data);")
cpp_quote("      HRESULT (WINAPI *deleteData)(IXMLDOMComment *This,LONG offset,LONG count);")
cpp_quote("      HRESULT (WINAPI *replaceData)(IXMLDOMComment *This,LONG offset,LONG count,BSTR data);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMCommentVtbl;")
cpp_quote("  struct IXMLDOMComment {")
cpp_quote("    CONST_VTBL struct IXMLDOMCommentVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMComment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMComment_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMComment_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMComment_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMComment_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMComment_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMComment_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMComment_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMComment_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMComment_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMComment_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMComment_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMComment_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMComment_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMComment_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMComment_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMComment_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMComment_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMComment_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMComment_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMComment_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMComment_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMComment_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMComment_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMComment_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMComment_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMComment_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMComment_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMComment_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMComment_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMComment_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMComment_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMComment_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMComment_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMComment_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMComment_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMComment_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMComment_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMComment_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMComment_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMComment_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMComment_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMComment_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXMLDOMComment_get_data(This,data) (This)->lpVtbl->get_data(This,data)")
cpp_quote("#define IXMLDOMComment_put_data(This,data) (This)->lpVtbl->put_data(This,data)")
cpp_quote("#define IXMLDOMComment_get_length(This,dataLength) (This)->lpVtbl->get_length(This,dataLength)")
cpp_quote("#define IXMLDOMComment_substringData(This,offset,count,data) (This)->lpVtbl->substringData(This,offset,count,data)")
cpp_quote("#define IXMLDOMComment_appendData(This,data) (This)->lpVtbl->appendData(This,data)")
cpp_quote("#define IXMLDOMComment_insertData(This,offset,data) (This)->lpVtbl->insertData(This,offset,data)")
cpp_quote("#define IXMLDOMComment_deleteData(This,offset,count) (This)->lpVtbl->deleteData(This,offset,count)")
cpp_quote("#define IXMLDOMComment_replaceData(This,offset,count,data) (This)->lpVtbl->replaceData(This,offset,count,data)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMProcessingInstruction_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMProcessingInstruction_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMProcessingInstruction;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMProcessingInstruction : public IXMLDOMNode {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_target(BSTR *name) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_data(BSTR *value) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_data(BSTR value) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMProcessingInstructionVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMProcessingInstruction *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMProcessingInstruction *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMProcessingInstruction *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMProcessingInstruction *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMProcessingInstruction *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMProcessingInstruction *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMProcessingInstruction *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMProcessingInstruction *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMProcessingInstruction *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMProcessingInstruction *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMProcessingInstruction *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMProcessingInstruction *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMProcessingInstruction *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMProcessingInstruction *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMProcessingInstruction *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMProcessingInstruction *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMProcessingInstruction *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMProcessingInstruction *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMProcessingInstruction *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMProcessingInstruction *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMProcessingInstruction *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMProcessingInstruction *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMProcessingInstruction *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMProcessingInstruction *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMProcessingInstruction *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMProcessingInstruction *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMProcessingInstruction *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMProcessingInstruction *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMProcessingInstruction *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMProcessingInstruction *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *get_target)(IXMLDOMProcessingInstruction *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_data)(IXMLDOMProcessingInstruction *This,BSTR *value);")
cpp_quote("      HRESULT (WINAPI *put_data)(IXMLDOMProcessingInstruction *This,BSTR value);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMProcessingInstructionVtbl;")
cpp_quote("  struct IXMLDOMProcessingInstruction {")
cpp_quote("    CONST_VTBL struct IXMLDOMProcessingInstructionVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMProcessingInstruction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMProcessingInstruction_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMProcessingInstruction_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMProcessingInstruction_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMProcessingInstruction_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMProcessingInstruction_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMProcessingInstruction_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMProcessingInstruction_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMProcessingInstruction_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMProcessingInstruction_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMProcessingInstruction_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMProcessingInstruction_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMProcessingInstruction_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMProcessingInstruction_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMProcessingInstruction_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMProcessingInstruction_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMProcessingInstruction_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMProcessingInstruction_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMProcessingInstruction_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMProcessingInstruction_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMProcessingInstruction_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_target(This,name) (This)->lpVtbl->get_target(This,name)")
cpp_quote("#define IXMLDOMProcessingInstruction_get_data(This,value) (This)->lpVtbl->get_data(This,value)")
cpp_quote("#define IXMLDOMProcessingInstruction_put_data(This,value) (This)->lpVtbl->put_data(This,value)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMProcessingInstruction_get_target_Proxy(IXMLDOMProcessingInstruction *This,BSTR *name);")
cpp_quote("  void __RPC_STUB IXMLDOMProcessingInstruction_get_target_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMProcessingInstruction_get_data_Proxy(IXMLDOMProcessingInstruction *This,BSTR *value);")
cpp_quote("  void __RPC_STUB IXMLDOMProcessingInstruction_get_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMProcessingInstruction_put_data_Proxy(IXMLDOMProcessingInstruction *This,BSTR value);")
cpp_quote("  void __RPC_STUB IXMLDOMProcessingInstruction_put_data_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMCDATASection_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMCDATASection_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMCDATASection;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMCDATASection : public IXMLDOMText {")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMCDATASectionVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMCDATASection *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMCDATASection *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMCDATASection *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMCDATASection *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMCDATASection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMCDATASection *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMCDATASection *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMCDATASection *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMCDATASection *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMCDATASection *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMCDATASection *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMCDATASection *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMCDATASection *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMCDATASection *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMCDATASection *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMCDATASection *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMCDATASection *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMCDATASection *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMCDATASection *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMCDATASection *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMCDATASection *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMCDATASection *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMCDATASection *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMCDATASection *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMCDATASection *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMCDATASection *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMCDATASection *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMCDATASection *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMCDATASection *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMCDATASection *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMCDATASection *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMCDATASection *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMCDATASection *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMCDATASection *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMCDATASection *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMCDATASection *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMCDATASection *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMCDATASection *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMCDATASection *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMCDATASection *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMCDATASection *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMCDATASection *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMCDATASection *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *get_data)(IXMLDOMCDATASection *This,BSTR *data);")
cpp_quote("      HRESULT (WINAPI *put_data)(IXMLDOMCDATASection *This,BSTR data);")
cpp_quote("      HRESULT (WINAPI *get_length)(IXMLDOMCDATASection *This,LONG *dataLength);")
cpp_quote("      HRESULT (WINAPI *substringData)(IXMLDOMCDATASection *This,LONG offset,LONG count,BSTR *data);")
cpp_quote("      HRESULT (WINAPI *appendData)(IXMLDOMCDATASection *This,BSTR data);")
cpp_quote("      HRESULT (WINAPI *insertData)(IXMLDOMCDATASection *This,LONG offset,BSTR data);")
cpp_quote("      HRESULT (WINAPI *deleteData)(IXMLDOMCDATASection *This,LONG offset,LONG count);")
cpp_quote("      HRESULT (WINAPI *replaceData)(IXMLDOMCDATASection *This,LONG offset,LONG count,BSTR data);")
cpp_quote("      HRESULT (WINAPI *splitText)(IXMLDOMCDATASection *This,LONG offset,IXMLDOMText **rightHandTextNode);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMCDATASectionVtbl;")
cpp_quote("  struct IXMLDOMCDATASection {")
cpp_quote("    CONST_VTBL struct IXMLDOMCDATASectionVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMCDATASection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMCDATASection_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMCDATASection_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMCDATASection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMCDATASection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMCDATASection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMCDATASection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMCDATASection_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMCDATASection_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMCDATASection_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMCDATASection_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMCDATASection_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMCDATASection_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMCDATASection_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMCDATASection_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMCDATASection_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMCDATASection_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMCDATASection_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMCDATASection_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMCDATASection_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMCDATASection_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMCDATASection_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMCDATASection_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMCDATASection_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMCDATASection_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMCDATASection_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMCDATASection_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMCDATASection_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMCDATASection_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMCDATASection_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMCDATASection_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMCDATASection_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMCDATASection_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMCDATASection_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMCDATASection_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMCDATASection_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMCDATASection_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMCDATASection_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMCDATASection_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMCDATASection_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMCDATASection_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMCDATASection_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMCDATASection_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXMLDOMCDATASection_get_data(This,data) (This)->lpVtbl->get_data(This,data)")
cpp_quote("#define IXMLDOMCDATASection_put_data(This,data) (This)->lpVtbl->put_data(This,data)")
cpp_quote("#define IXMLDOMCDATASection_get_length(This,dataLength) (This)->lpVtbl->get_length(This,dataLength)")
cpp_quote("#define IXMLDOMCDATASection_substringData(This,offset,count,data) (This)->lpVtbl->substringData(This,offset,count,data)")
cpp_quote("#define IXMLDOMCDATASection_appendData(This,data) (This)->lpVtbl->appendData(This,data)")
cpp_quote("#define IXMLDOMCDATASection_insertData(This,offset,data) (This)->lpVtbl->insertData(This,offset,data)")
cpp_quote("#define IXMLDOMCDATASection_deleteData(This,offset,count) (This)->lpVtbl->deleteData(This,offset,count)")
cpp_quote("#define IXMLDOMCDATASection_replaceData(This,offset,count,data) (This)->lpVtbl->replaceData(This,offset,count,data)")
cpp_quote("#define IXMLDOMCDATASection_splitText(This,offset,rightHandTextNode) (This)->lpVtbl->splitText(This,offset,rightHandTextNode)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMDocumentType_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMDocumentType_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMDocumentType;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMDocumentType : public IXMLDOMNode {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_name(BSTR *rootName) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_entities(IXMLDOMNamedNodeMap **entityMap) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_notations(IXMLDOMNamedNodeMap **notationMap) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMDocumentTypeVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMDocumentType *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMDocumentType *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMDocumentType *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMDocumentType *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMDocumentType *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMDocumentType *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMDocumentType *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMDocumentType *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMDocumentType *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMDocumentType *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMDocumentType *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMDocumentType *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMDocumentType *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMDocumentType *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMDocumentType *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMDocumentType *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMDocumentType *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMDocumentType *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMDocumentType *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMDocumentType *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMDocumentType *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMDocumentType *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMDocumentType *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMDocumentType *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMDocumentType *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMDocumentType *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMDocumentType *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMDocumentType *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMDocumentType *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMDocumentType *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMDocumentType *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMDocumentType *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMDocumentType *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMDocumentType *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMDocumentType *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMDocumentType *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMDocumentType *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMDocumentType *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMDocumentType *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMDocumentType *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMDocumentType *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMDocumentType *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *get_name)(IXMLDOMDocumentType *This,BSTR *rootName);")
cpp_quote("      HRESULT (WINAPI *get_entities)(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **entityMap);")
cpp_quote("      HRESULT (WINAPI *get_notations)(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **notationMap);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMDocumentTypeVtbl;")
cpp_quote("  struct IXMLDOMDocumentType {")
cpp_quote("    CONST_VTBL struct IXMLDOMDocumentTypeVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMDocumentType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMDocumentType_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMDocumentType_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMDocumentType_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMDocumentType_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMDocumentType_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMDocumentType_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMDocumentType_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMDocumentType_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMDocumentType_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMDocumentType_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMDocumentType_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMDocumentType_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMDocumentType_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMDocumentType_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMDocumentType_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMDocumentType_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMDocumentType_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMDocumentType_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMDocumentType_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMDocumentType_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMDocumentType_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMDocumentType_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMDocumentType_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMDocumentType_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMDocumentType_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMDocumentType_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMDocumentType_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMDocumentType_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMDocumentType_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMDocumentType_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMDocumentType_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMDocumentType_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMDocumentType_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMDocumentType_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMDocumentType_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMDocumentType_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMDocumentType_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMDocumentType_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMDocumentType_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMDocumentType_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMDocumentType_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMDocumentType_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXMLDOMDocumentType_get_name(This,rootName) (This)->lpVtbl->get_name(This,rootName)")
cpp_quote("#define IXMLDOMDocumentType_get_entities(This,entityMap) (This)->lpVtbl->get_entities(This,entityMap)")
cpp_quote("#define IXMLDOMDocumentType_get_notations(This,notationMap) (This)->lpVtbl->get_notations(This,notationMap)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMDocumentType_get_name_Proxy(IXMLDOMDocumentType *This,BSTR *rootName);")
cpp_quote("  void __RPC_STUB IXMLDOMDocumentType_get_name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocumentType_get_entities_Proxy(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **entityMap);")
cpp_quote("  void __RPC_STUB IXMLDOMDocumentType_get_entities_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMDocumentType_get_notations_Proxy(IXMLDOMDocumentType *This,IXMLDOMNamedNodeMap **notationMap);")
cpp_quote("  void __RPC_STUB IXMLDOMDocumentType_get_notations_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMNotation_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMNotation_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMNotation;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMNotation : public IXMLDOMNode {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_publicId(VARIANT *publicID) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_systemId(VARIANT *systemID) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMNotationVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMNotation *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMNotation *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMNotation *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMNotation *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMNotation *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMNotation *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMNotation *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMNotation *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMNotation *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMNotation *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMNotation *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMNotation *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMNotation *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMNotation *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMNotation *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMNotation *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMNotation *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMNotation *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMNotation *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMNotation *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMNotation *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMNotation *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMNotation *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMNotation *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMNotation *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMNotation *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMNotation *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMNotation *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMNotation *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMNotation *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMNotation *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMNotation *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMNotation *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMNotation *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMNotation *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMNotation *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMNotation *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMNotation *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMNotation *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMNotation *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMNotation *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMNotation *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMNotation *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *get_publicId)(IXMLDOMNotation *This,VARIANT *publicID);")
cpp_quote("      HRESULT (WINAPI *get_systemId)(IXMLDOMNotation *This,VARIANT *systemID);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMNotationVtbl;")
cpp_quote("  struct IXMLDOMNotation {")
cpp_quote("    CONST_VTBL struct IXMLDOMNotationVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMNotation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMNotation_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMNotation_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMNotation_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMNotation_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMNotation_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMNotation_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMNotation_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMNotation_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMNotation_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMNotation_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMNotation_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMNotation_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMNotation_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMNotation_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMNotation_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMNotation_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMNotation_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMNotation_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMNotation_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMNotation_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMNotation_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMNotation_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMNotation_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMNotation_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMNotation_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMNotation_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMNotation_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMNotation_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMNotation_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMNotation_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMNotation_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMNotation_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMNotation_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMNotation_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMNotation_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMNotation_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMNotation_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMNotation_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMNotation_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMNotation_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMNotation_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMNotation_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXMLDOMNotation_get_publicId(This,publicID) (This)->lpVtbl->get_publicId(This,publicID)")
cpp_quote("#define IXMLDOMNotation_get_systemId(This,systemID) (This)->lpVtbl->get_systemId(This,systemID)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMNotation_get_publicId_Proxy(IXMLDOMNotation *This,VARIANT *publicID);")
cpp_quote("  void __RPC_STUB IXMLDOMNotation_get_publicId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMNotation_get_systemId_Proxy(IXMLDOMNotation *This,VARIANT *systemID);")
cpp_quote("  void __RPC_STUB IXMLDOMNotation_get_systemId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMEntity_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMEntity_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMEntity;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMEntity : public IXMLDOMNode {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_publicId(VARIANT *publicID) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_systemId(VARIANT *systemID) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_notationName(BSTR *name) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMEntityVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMEntity *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMEntity *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMEntity *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMEntity *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMEntity *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMEntity *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMEntity *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMEntity *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMEntity *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMEntity *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMEntity *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMEntity *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMEntity *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMEntity *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMEntity *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMEntity *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMEntity *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMEntity *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMEntity *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMEntity *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMEntity *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMEntity *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMEntity *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMEntity *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMEntity *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMEntity *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMEntity *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMEntity *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMEntity *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMEntity *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMEntity *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMEntity *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMEntity *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMEntity *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMEntity *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMEntity *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMEntity *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMEntity *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMEntity *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMEntity *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMEntity *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMEntity *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMEntity *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *get_publicId)(IXMLDOMEntity *This,VARIANT *publicID);")
cpp_quote("      HRESULT (WINAPI *get_systemId)(IXMLDOMEntity *This,VARIANT *systemID);")
cpp_quote("      HRESULT (WINAPI *get_notationName)(IXMLDOMEntity *This,BSTR *name);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMEntityVtbl;")
cpp_quote("  struct IXMLDOMEntity {")
cpp_quote("    CONST_VTBL struct IXMLDOMEntityVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMEntity_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMEntity_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMEntity_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMEntity_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMEntity_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMEntity_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMEntity_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMEntity_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMEntity_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMEntity_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMEntity_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMEntity_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMEntity_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMEntity_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMEntity_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMEntity_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMEntity_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMEntity_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMEntity_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMEntity_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMEntity_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMEntity_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMEntity_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMEntity_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMEntity_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMEntity_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMEntity_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMEntity_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMEntity_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMEntity_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMEntity_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMEntity_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMEntity_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMEntity_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMEntity_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMEntity_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMEntity_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMEntity_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMEntity_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMEntity_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMEntity_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMEntity_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMEntity_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXMLDOMEntity_get_publicId(This,publicID) (This)->lpVtbl->get_publicId(This,publicID)")
cpp_quote("#define IXMLDOMEntity_get_systemId(This,systemID) (This)->lpVtbl->get_systemId(This,systemID)")
cpp_quote("#define IXMLDOMEntity_get_notationName(This,name) (This)->lpVtbl->get_notationName(This,name)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMEntity_get_publicId_Proxy(IXMLDOMEntity *This,VARIANT *publicID);")
cpp_quote("  void __RPC_STUB IXMLDOMEntity_get_publicId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMEntity_get_systemId_Proxy(IXMLDOMEntity *This,VARIANT *systemID);")
cpp_quote("  void __RPC_STUB IXMLDOMEntity_get_systemId_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMEntity_get_notationName_Proxy(IXMLDOMEntity *This,BSTR *name);")
cpp_quote("  void __RPC_STUB IXMLDOMEntity_get_notationName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMEntityReference_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMEntityReference_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMEntityReference;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMEntityReference : public IXMLDOMNode {")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMEntityReferenceVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMEntityReference *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMEntityReference *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMEntityReference *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMEntityReference *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMEntityReference *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMEntityReference *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMEntityReference *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXMLDOMEntityReference *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXMLDOMEntityReference *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXMLDOMEntityReference *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXMLDOMEntityReference *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXMLDOMEntityReference *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXMLDOMEntityReference *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXMLDOMEntityReference *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXMLDOMEntityReference *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXMLDOMEntityReference *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXMLDOMEntityReference *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLDOMEntityReference *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXMLDOMEntityReference *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXMLDOMEntityReference *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLDOMEntityReference *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXMLDOMEntityReference *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXMLDOMEntityReference *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXMLDOMEntityReference *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXMLDOMEntityReference *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXMLDOMEntityReference *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLDOMEntityReference *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLDOMEntityReference *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXMLDOMEntityReference *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXMLDOMEntityReference *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXMLDOMEntityReference *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXMLDOMEntityReference *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXMLDOMEntityReference *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXMLDOMEntityReference *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXMLDOMEntityReference *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXMLDOMEntityReference *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXMLDOMEntityReference *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXMLDOMEntityReference *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXMLDOMEntityReference *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXMLDOMEntityReference *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXMLDOMEntityReference *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXMLDOMEntityReference *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXMLDOMEntityReference *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMEntityReferenceVtbl;")
cpp_quote("  struct IXMLDOMEntityReference {")
cpp_quote("    CONST_VTBL struct IXMLDOMEntityReferenceVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMEntityReference_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMEntityReference_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMEntityReference_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMEntityReference_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMEntityReference_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMEntityReference_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMEntityReference_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMEntityReference_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXMLDOMEntityReference_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXMLDOMEntityReference_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXMLDOMEntityReference_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXMLDOMEntityReference_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXMLDOMEntityReference_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXMLDOMEntityReference_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXMLDOMEntityReference_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXMLDOMEntityReference_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXMLDOMEntityReference_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXMLDOMEntityReference_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXMLDOMEntityReference_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXMLDOMEntityReference_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXMLDOMEntityReference_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXMLDOMEntityReference_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXMLDOMEntityReference_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXMLDOMEntityReference_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXMLDOMEntityReference_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXMLDOMEntityReference_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXMLDOMEntityReference_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXMLDOMEntityReference_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXMLDOMEntityReference_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXMLDOMEntityReference_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXMLDOMEntityReference_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMEntityReference_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXMLDOMEntityReference_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMEntityReference_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXMLDOMEntityReference_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXMLDOMEntityReference_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXMLDOMEntityReference_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXMLDOMEntityReference_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXMLDOMEntityReference_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXMLDOMEntityReference_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXMLDOMEntityReference_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXMLDOMEntityReference_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXMLDOMEntityReference_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDOMParseError_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDOMParseError_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDOMParseError;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDOMParseError : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_errorCode(LONG *errorCode) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_url(BSTR *urlString) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_reason(BSTR *reasonString) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_srcText(BSTR *sourceString) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_line(LONG *lineNumber) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_linepos(LONG *linePosition) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_filepos(LONG *filePosition) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDOMParseErrorVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDOMParseError *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDOMParseError *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDOMParseError *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDOMParseError *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDOMParseError *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDOMParseError *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDOMParseError *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_errorCode)(IXMLDOMParseError *This,LONG *errorCode);")
cpp_quote("      HRESULT (WINAPI *get_url)(IXMLDOMParseError *This,BSTR *urlString);")
cpp_quote("      HRESULT (WINAPI *get_reason)(IXMLDOMParseError *This,BSTR *reasonString);")
cpp_quote("      HRESULT (WINAPI *get_srcText)(IXMLDOMParseError *This,BSTR *sourceString);")
cpp_quote("      HRESULT (WINAPI *get_line)(IXMLDOMParseError *This,LONG *lineNumber);")
cpp_quote("      HRESULT (WINAPI *get_linepos)(IXMLDOMParseError *This,LONG *linePosition);")
cpp_quote("      HRESULT (WINAPI *get_filepos)(IXMLDOMParseError *This,LONG *filePosition);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDOMParseErrorVtbl;")
cpp_quote("  struct IXMLDOMParseError {")
cpp_quote("    CONST_VTBL struct IXMLDOMParseErrorVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDOMParseError_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDOMParseError_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDOMParseError_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDOMParseError_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDOMParseError_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDOMParseError_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDOMParseError_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDOMParseError_get_errorCode(This,errorCode) (This)->lpVtbl->get_errorCode(This,errorCode)")
cpp_quote("#define IXMLDOMParseError_get_url(This,urlString) (This)->lpVtbl->get_url(This,urlString)")
cpp_quote("#define IXMLDOMParseError_get_reason(This,reasonString) (This)->lpVtbl->get_reason(This,reasonString)")
cpp_quote("#define IXMLDOMParseError_get_srcText(This,sourceString) (This)->lpVtbl->get_srcText(This,sourceString)")
cpp_quote("#define IXMLDOMParseError_get_line(This,lineNumber) (This)->lpVtbl->get_line(This,lineNumber)")
cpp_quote("#define IXMLDOMParseError_get_linepos(This,linePosition) (This)->lpVtbl->get_linepos(This,linePosition)")
cpp_quote("#define IXMLDOMParseError_get_filepos(This,filePosition) (This)->lpVtbl->get_filepos(This,filePosition)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDOMParseError_get_errorCode_Proxy(IXMLDOMParseError *This,LONG *errorCode);")
cpp_quote("  void __RPC_STUB IXMLDOMParseError_get_errorCode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMParseError_get_url_Proxy(IXMLDOMParseError *This,BSTR *urlString);")
cpp_quote("  void __RPC_STUB IXMLDOMParseError_get_url_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMParseError_get_reason_Proxy(IXMLDOMParseError *This,BSTR *reasonString);")
cpp_quote("  void __RPC_STUB IXMLDOMParseError_get_reason_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMParseError_get_srcText_Proxy(IXMLDOMParseError *This,BSTR *sourceString);")
cpp_quote("  void __RPC_STUB IXMLDOMParseError_get_srcText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMParseError_get_line_Proxy(IXMLDOMParseError *This,LONG *lineNumber);")
cpp_quote("  void __RPC_STUB IXMLDOMParseError_get_line_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMParseError_get_linepos_Proxy(IXMLDOMParseError *This,LONG *linePosition);")
cpp_quote("  void __RPC_STUB IXMLDOMParseError_get_linepos_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDOMParseError_get_filepos_Proxy(IXMLDOMParseError *This,LONG *filePosition);")
cpp_quote("  void __RPC_STUB IXMLDOMParseError_get_filepos_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXTLRuntime_INTERFACE_DEFINED__")
cpp_quote("#define __IXTLRuntime_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXTLRuntime;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXTLRuntime : public IXMLDOMNode {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI uniqueID(IXMLDOMNode *pNode,LONG *pID) = 0;")
cpp_quote("    virtual HRESULT WINAPI depth(IXMLDOMNode *pNode,LONG *pDepth) = 0;")
cpp_quote("    virtual HRESULT WINAPI childNumber(IXMLDOMNode *pNode,LONG *pNumber) = 0;")
cpp_quote("    virtual HRESULT WINAPI ancestorChildNumber(BSTR bstrNodeName,IXMLDOMNode *pNode,LONG *pNumber) = 0;")
cpp_quote("    virtual HRESULT WINAPI absoluteChildNumber(IXMLDOMNode *pNode,LONG *pNumber) = 0;")
cpp_quote("    virtual HRESULT WINAPI formatIndex(LONG lIndex,BSTR bstrFormat,BSTR *pbstrFormattedString) = 0;")
cpp_quote("    virtual HRESULT WINAPI formatNumber(double dblNumber,BSTR bstrFormat,BSTR *pbstrFormattedString) = 0;")
cpp_quote("    virtual HRESULT WINAPI formatDate(VARIANT varDate,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString) = 0;")
cpp_quote("    virtual HRESULT WINAPI formatTime(VARIANT varTime,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXTLRuntimeVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXTLRuntime *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXTLRuntime *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXTLRuntime *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXTLRuntime *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXTLRuntime *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXTLRuntime *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXTLRuntime *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_nodeName)(IXTLRuntime *This,BSTR *name);")
cpp_quote("      HRESULT (WINAPI *get_nodeValue)(IXTLRuntime *This,VARIANT *value);")
cpp_quote("      HRESULT (WINAPI *put_nodeValue)(IXTLRuntime *This,VARIANT value);")
cpp_quote("      HRESULT (WINAPI *get_nodeType)(IXTLRuntime *This,DOMNodeType *type);")
cpp_quote("      HRESULT (WINAPI *get_parentNode)(IXTLRuntime *This,IXMLDOMNode **parent);")
cpp_quote("      HRESULT (WINAPI *get_childNodes)(IXTLRuntime *This,IXMLDOMNodeList **childList);")
cpp_quote("      HRESULT (WINAPI *get_firstChild)(IXTLRuntime *This,IXMLDOMNode **firstChild);")
cpp_quote("      HRESULT (WINAPI *get_lastChild)(IXTLRuntime *This,IXMLDOMNode **lastChild);")
cpp_quote("      HRESULT (WINAPI *get_previousSibling)(IXTLRuntime *This,IXMLDOMNode **previousSibling);")
cpp_quote("      HRESULT (WINAPI *get_nextSibling)(IXTLRuntime *This,IXMLDOMNode **nextSibling);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXTLRuntime *This,IXMLDOMNamedNodeMap **attributeMap);")
cpp_quote("      HRESULT (WINAPI *insertBefore)(IXTLRuntime *This,IXMLDOMNode *newChild,VARIANT refChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *replaceChild)(IXTLRuntime *This,IXMLDOMNode *newChild,IXMLDOMNode *oldChild,IXMLDOMNode **outOldChild);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXTLRuntime *This,IXMLDOMNode *childNode,IXMLDOMNode **oldChild);")
cpp_quote("      HRESULT (WINAPI *appendChild)(IXTLRuntime *This,IXMLDOMNode *newChild,IXMLDOMNode **outNewChild);")
cpp_quote("      HRESULT (WINAPI *hasChildNodes)(IXTLRuntime *This,VARIANT_BOOL *hasChild);")
cpp_quote("      HRESULT (WINAPI *get_ownerDocument)(IXTLRuntime *This,IXMLDOMDocument **DOMDocument);")
cpp_quote("      HRESULT (WINAPI *cloneNode)(IXTLRuntime *This,VARIANT_BOOL deep,IXMLDOMNode **cloneRoot);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypeString)(IXTLRuntime *This,BSTR *nodeType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXTLRuntime *This,BSTR *text);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXTLRuntime *This,BSTR text);")
cpp_quote("      HRESULT (WINAPI *get_specified)(IXTLRuntime *This,VARIANT_BOOL *isSpecified);")
cpp_quote("      HRESULT (WINAPI *get_definition)(IXTLRuntime *This,IXMLDOMNode **definitionNode);")
cpp_quote("      HRESULT (WINAPI *get_nodeTypedValue)(IXTLRuntime *This,VARIANT *typedValue);")
cpp_quote("      HRESULT (WINAPI *put_nodeTypedValue)(IXTLRuntime *This,VARIANT typedValue);")
cpp_quote("      HRESULT (WINAPI *get_dataType)(IXTLRuntime *This,VARIANT *dataTypeName);")
cpp_quote("      HRESULT (WINAPI *put_dataType)(IXTLRuntime *This,BSTR dataTypeName);")
cpp_quote("      HRESULT (WINAPI *get_xml)(IXTLRuntime *This,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *transformNode)(IXTLRuntime *This,IXMLDOMNode *stylesheet,BSTR *xmlString);")
cpp_quote("      HRESULT (WINAPI *selectNodes)(IXTLRuntime *This,BSTR queryString,IXMLDOMNodeList **resultList);")
cpp_quote("      HRESULT (WINAPI *selectSingleNode)(IXTLRuntime *This,BSTR queryString,IXMLDOMNode **resultNode);")
cpp_quote("      HRESULT (WINAPI *get_parsed)(IXTLRuntime *This,VARIANT_BOOL *isParsed);")
cpp_quote("      HRESULT (WINAPI *get_namespaceURI)(IXTLRuntime *This,BSTR *namespaceURI);")
cpp_quote("      HRESULT (WINAPI *get_prefix)(IXTLRuntime *This,BSTR *prefixString);")
cpp_quote("      HRESULT (WINAPI *get_baseName)(IXTLRuntime *This,BSTR *nameString);")
cpp_quote("      HRESULT (WINAPI *transformNodeToObject)(IXTLRuntime *This,IXMLDOMNode *stylesheet,VARIANT outputObject);")
cpp_quote("      HRESULT (WINAPI *uniqueID)(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pID);")
cpp_quote("      HRESULT (WINAPI *depth)(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pDepth);")
cpp_quote("      HRESULT (WINAPI *childNumber)(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pNumber);")
cpp_quote("      HRESULT (WINAPI *ancestorChildNumber)(IXTLRuntime *This,BSTR bstrNodeName,IXMLDOMNode *pNode,LONG *pNumber);")
cpp_quote("      HRESULT (WINAPI *absoluteChildNumber)(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pNumber);")
cpp_quote("      HRESULT (WINAPI *formatIndex)(IXTLRuntime *This,LONG lIndex,BSTR bstrFormat,BSTR *pbstrFormattedString);")
cpp_quote("      HRESULT (WINAPI *formatNumber)(IXTLRuntime *This,double dblNumber,BSTR bstrFormat,BSTR *pbstrFormattedString);")
cpp_quote("      HRESULT (WINAPI *formatDate)(IXTLRuntime *This,VARIANT varDate,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);")
cpp_quote("      HRESULT (WINAPI *formatTime)(IXTLRuntime *This,VARIANT varTime,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXTLRuntimeVtbl;")
cpp_quote("  struct IXTLRuntime {")
cpp_quote("    CONST_VTBL struct IXTLRuntimeVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXTLRuntime_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXTLRuntime_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXTLRuntime_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXTLRuntime_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXTLRuntime_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXTLRuntime_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXTLRuntime_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXTLRuntime_get_nodeName(This,name) (This)->lpVtbl->get_nodeName(This,name)")
cpp_quote("#define IXTLRuntime_get_nodeValue(This,value) (This)->lpVtbl->get_nodeValue(This,value)")
cpp_quote("#define IXTLRuntime_put_nodeValue(This,value) (This)->lpVtbl->put_nodeValue(This,value)")
cpp_quote("#define IXTLRuntime_get_nodeType(This,type) (This)->lpVtbl->get_nodeType(This,type)")
cpp_quote("#define IXTLRuntime_get_parentNode(This,parent) (This)->lpVtbl->get_parentNode(This,parent)")
cpp_quote("#define IXTLRuntime_get_childNodes(This,childList) (This)->lpVtbl->get_childNodes(This,childList)")
cpp_quote("#define IXTLRuntime_get_firstChild(This,firstChild) (This)->lpVtbl->get_firstChild(This,firstChild)")
cpp_quote("#define IXTLRuntime_get_lastChild(This,lastChild) (This)->lpVtbl->get_lastChild(This,lastChild)")
cpp_quote("#define IXTLRuntime_get_previousSibling(This,previousSibling) (This)->lpVtbl->get_previousSibling(This,previousSibling)")
cpp_quote("#define IXTLRuntime_get_nextSibling(This,nextSibling) (This)->lpVtbl->get_nextSibling(This,nextSibling)")
cpp_quote("#define IXTLRuntime_get_attributes(This,attributeMap) (This)->lpVtbl->get_attributes(This,attributeMap)")
cpp_quote("#define IXTLRuntime_insertBefore(This,newChild,refChild,outNewChild) (This)->lpVtbl->insertBefore(This,newChild,refChild,outNewChild)")
cpp_quote("#define IXTLRuntime_replaceChild(This,newChild,oldChild,outOldChild) (This)->lpVtbl->replaceChild(This,newChild,oldChild,outOldChild)")
cpp_quote("#define IXTLRuntime_removeChild(This,childNode,oldChild) (This)->lpVtbl->removeChild(This,childNode,oldChild)")
cpp_quote("#define IXTLRuntime_appendChild(This,newChild,outNewChild) (This)->lpVtbl->appendChild(This,newChild,outNewChild)")
cpp_quote("#define IXTLRuntime_hasChildNodes(This,hasChild) (This)->lpVtbl->hasChildNodes(This,hasChild)")
cpp_quote("#define IXTLRuntime_get_ownerDocument(This,DOMDocument) (This)->lpVtbl->get_ownerDocument(This,DOMDocument)")
cpp_quote("#define IXTLRuntime_cloneNode(This,deep,cloneRoot) (This)->lpVtbl->cloneNode(This,deep,cloneRoot)")
cpp_quote("#define IXTLRuntime_get_nodeTypeString(This,nodeType) (This)->lpVtbl->get_nodeTypeString(This,nodeType)")
cpp_quote("#define IXTLRuntime_get_text(This,text) (This)->lpVtbl->get_text(This,text)")
cpp_quote("#define IXTLRuntime_put_text(This,text) (This)->lpVtbl->put_text(This,text)")
cpp_quote("#define IXTLRuntime_get_specified(This,isSpecified) (This)->lpVtbl->get_specified(This,isSpecified)")
cpp_quote("#define IXTLRuntime_get_definition(This,definitionNode) (This)->lpVtbl->get_definition(This,definitionNode)")
cpp_quote("#define IXTLRuntime_get_nodeTypedValue(This,typedValue) (This)->lpVtbl->get_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXTLRuntime_put_nodeTypedValue(This,typedValue) (This)->lpVtbl->put_nodeTypedValue(This,typedValue)")
cpp_quote("#define IXTLRuntime_get_dataType(This,dataTypeName) (This)->lpVtbl->get_dataType(This,dataTypeName)")
cpp_quote("#define IXTLRuntime_put_dataType(This,dataTypeName) (This)->lpVtbl->put_dataType(This,dataTypeName)")
cpp_quote("#define IXTLRuntime_get_xml(This,xmlString) (This)->lpVtbl->get_xml(This,xmlString)")
cpp_quote("#define IXTLRuntime_transformNode(This,stylesheet,xmlString) (This)->lpVtbl->transformNode(This,stylesheet,xmlString)")
cpp_quote("#define IXTLRuntime_selectNodes(This,queryString,resultList) (This)->lpVtbl->selectNodes(This,queryString,resultList)")
cpp_quote("#define IXTLRuntime_selectSingleNode(This,queryString,resultNode) (This)->lpVtbl->selectSingleNode(This,queryString,resultNode)")
cpp_quote("#define IXTLRuntime_get_parsed(This,isParsed) (This)->lpVtbl->get_parsed(This,isParsed)")
cpp_quote("#define IXTLRuntime_get_namespaceURI(This,namespaceURI) (This)->lpVtbl->get_namespaceURI(This,namespaceURI)")
cpp_quote("#define IXTLRuntime_get_prefix(This,prefixString) (This)->lpVtbl->get_prefix(This,prefixString)")
cpp_quote("#define IXTLRuntime_get_baseName(This,nameString) (This)->lpVtbl->get_baseName(This,nameString)")
cpp_quote("#define IXTLRuntime_transformNodeToObject(This,stylesheet,outputObject) (This)->lpVtbl->transformNodeToObject(This,stylesheet,outputObject)")
cpp_quote("#define IXTLRuntime_uniqueID(This,pNode,pID) (This)->lpVtbl->uniqueID(This,pNode,pID)")
cpp_quote("#define IXTLRuntime_depth(This,pNode,pDepth) (This)->lpVtbl->depth(This,pNode,pDepth)")
cpp_quote("#define IXTLRuntime_childNumber(This,pNode,pNumber) (This)->lpVtbl->childNumber(This,pNode,pNumber)")
cpp_quote("#define IXTLRuntime_ancestorChildNumber(This,bstrNodeName,pNode,pNumber) (This)->lpVtbl->ancestorChildNumber(This,bstrNodeName,pNode,pNumber)")
cpp_quote("#define IXTLRuntime_absoluteChildNumber(This,pNode,pNumber) (This)->lpVtbl->absoluteChildNumber(This,pNode,pNumber)")
cpp_quote("#define IXTLRuntime_formatIndex(This,lIndex,bstrFormat,pbstrFormattedString) (This)->lpVtbl->formatIndex(This,lIndex,bstrFormat,pbstrFormattedString)")
cpp_quote("#define IXTLRuntime_formatNumber(This,dblNumber,bstrFormat,pbstrFormattedString) (This)->lpVtbl->formatNumber(This,dblNumber,bstrFormat,pbstrFormattedString)")
cpp_quote("#define IXTLRuntime_formatDate(This,varDate,bstrFormat,varDestLocale,pbstrFormattedString) (This)->lpVtbl->formatDate(This,varDate,bstrFormat,varDestLocale,pbstrFormattedString)")
cpp_quote("#define IXTLRuntime_formatTime(This,varTime,bstrFormat,varDestLocale,pbstrFormattedString) (This)->lpVtbl->formatTime(This,varTime,bstrFormat,varDestLocale,pbstrFormattedString)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXTLRuntime_uniqueID_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pID);")
cpp_quote("  void __RPC_STUB IXTLRuntime_uniqueID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXTLRuntime_depth_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pDepth);")
cpp_quote("  void __RPC_STUB IXTLRuntime_depth_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXTLRuntime_childNumber_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pNumber);")
cpp_quote("  void __RPC_STUB IXTLRuntime_childNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXTLRuntime_ancestorChildNumber_Proxy(IXTLRuntime *This,BSTR bstrNodeName,IXMLDOMNode *pNode,LONG *pNumber);")
cpp_quote("  void __RPC_STUB IXTLRuntime_ancestorChildNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXTLRuntime_absoluteChildNumber_Proxy(IXTLRuntime *This,IXMLDOMNode *pNode,LONG *pNumber);")
cpp_quote("  void __RPC_STUB IXTLRuntime_absoluteChildNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXTLRuntime_formatIndex_Proxy(IXTLRuntime *This,LONG lIndex,BSTR bstrFormat,BSTR *pbstrFormattedString);")
cpp_quote("  void __RPC_STUB IXTLRuntime_formatIndex_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXTLRuntime_formatNumber_Proxy(IXTLRuntime *This,double dblNumber,BSTR bstrFormat,BSTR *pbstrFormattedString);")
cpp_quote("  void __RPC_STUB IXTLRuntime_formatNumber_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXTLRuntime_formatDate_Proxy(IXTLRuntime *This,VARIANT varDate,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);")
cpp_quote("  void __RPC_STUB IXTLRuntime_formatDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXTLRuntime_formatTime_Proxy(IXTLRuntime *This,VARIANT varTime,BSTR bstrFormat,VARIANT varDestLocale,BSTR *pbstrFormattedString);")
cpp_quote("  void __RPC_STUB IXTLRuntime_formatTime_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __XMLDOMDocumentEvents_DISPINTERFACE_DEFINED__")
cpp_quote("#define __XMLDOMDocumentEvents_DISPINTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID DIID_XMLDOMDocumentEvents;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct XMLDOMDocumentEvents : public IDispatch {")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct XMLDOMDocumentEventsVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(XMLDOMDocumentEvents *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(XMLDOMDocumentEvents *This);")
cpp_quote("      ULONG (WINAPI *Release)(XMLDOMDocumentEvents *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(XMLDOMDocumentEvents *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(XMLDOMDocumentEvents *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(XMLDOMDocumentEvents *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(XMLDOMDocumentEvents *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } XMLDOMDocumentEventsVtbl;")
cpp_quote("  struct XMLDOMDocumentEvents {")
cpp_quote("    CONST_VTBL struct XMLDOMDocumentEventsVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define XMLDOMDocumentEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define XMLDOMDocumentEvents_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define XMLDOMDocumentEvents_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define XMLDOMDocumentEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define XMLDOMDocumentEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define XMLDOMDocumentEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define XMLDOMDocumentEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  EXTERN_C const CLSID CLSID_DOMDocument;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class DOMDocument;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_DOMFreeThreadedDocument;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class DOMFreeThreadedDocument;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLHttpRequest_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLHttpRequest_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLHttpRequest;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLHttpRequest : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI open(BSTR bstrMethod,BSTR bstrUrl,VARIANT varAsync,VARIANT bstrUser,VARIANT bstrPassword) = 0;")
cpp_quote("    virtual HRESULT WINAPI setRequestHeader(BSTR bstrHeader,BSTR bstrValue) = 0;")
cpp_quote("    virtual HRESULT WINAPI getResponseHeader(BSTR bstrHeader,BSTR *pbstrValue) = 0;")
cpp_quote("    virtual HRESULT WINAPI getAllResponseHeaders(BSTR *pbstrHeaders) = 0;")
cpp_quote("    virtual HRESULT WINAPI send(VARIANT varBody) = 0;")
cpp_quote("    virtual HRESULT WINAPI abort(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_status(LONG *plStatus) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_statusText(BSTR *pbstrStatus) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_responseXML(IDispatch **ppBody) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_responseText(BSTR *pbstrBody) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_responseBody(VARIANT *pvarBody) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_responseStream(VARIANT *pvarBody) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_readyState(LONG *plState) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_onreadystatechange(IDispatch *pReadyStateSink) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLHttpRequestVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLHttpRequest *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLHttpRequest *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLHttpRequest *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLHttpRequest *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLHttpRequest *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLHttpRequest *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLHttpRequest *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *open)(IXMLHttpRequest *This,BSTR bstrMethod,BSTR bstrUrl,VARIANT varAsync,VARIANT bstrUser,VARIANT bstrPassword);")
cpp_quote("      HRESULT (WINAPI *setRequestHeader)(IXMLHttpRequest *This,BSTR bstrHeader,BSTR bstrValue);")
cpp_quote("      HRESULT (WINAPI *getResponseHeader)(IXMLHttpRequest *This,BSTR bstrHeader,BSTR *pbstrValue);")
cpp_quote("      HRESULT (WINAPI *getAllResponseHeaders)(IXMLHttpRequest *This,BSTR *pbstrHeaders);")
cpp_quote("      HRESULT (WINAPI *send)(IXMLHttpRequest *This,VARIANT varBody);")
cpp_quote("      HRESULT (WINAPI *abort)(IXMLHttpRequest *This);")
cpp_quote("      HRESULT (WINAPI *get_status)(IXMLHttpRequest *This,LONG *plStatus);")
cpp_quote("      HRESULT (WINAPI *get_statusText)(IXMLHttpRequest *This,BSTR *pbstrStatus);")
cpp_quote("      HRESULT (WINAPI *get_responseXML)(IXMLHttpRequest *This,IDispatch **ppBody);")
cpp_quote("      HRESULT (WINAPI *get_responseText)(IXMLHttpRequest *This,BSTR *pbstrBody);")
cpp_quote("      HRESULT (WINAPI *get_responseBody)(IXMLHttpRequest *This,VARIANT *pvarBody);")
cpp_quote("      HRESULT (WINAPI *get_responseStream)(IXMLHttpRequest *This,VARIANT *pvarBody);")
cpp_quote("      HRESULT (WINAPI *get_readyState)(IXMLHttpRequest *This,LONG *plState);")
cpp_quote("      HRESULT (WINAPI *put_onreadystatechange)(IXMLHttpRequest *This,IDispatch *pReadyStateSink);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLHttpRequestVtbl;")
cpp_quote("  struct IXMLHttpRequest {")
cpp_quote("    CONST_VTBL struct IXMLHttpRequestVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLHttpRequest_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLHttpRequest_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLHttpRequest_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLHttpRequest_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLHttpRequest_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLHttpRequest_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLHttpRequest_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLHttpRequest_open(This,bstrMethod,bstrUrl,varAsync,bstrUser,bstrPassword) (This)->lpVtbl->open(This,bstrMethod,bstrUrl,varAsync,bstrUser,bstrPassword)")
cpp_quote("#define IXMLHttpRequest_setRequestHeader(This,bstrHeader,bstrValue) (This)->lpVtbl->setRequestHeader(This,bstrHeader,bstrValue)")
cpp_quote("#define IXMLHttpRequest_getResponseHeader(This,bstrHeader,pbstrValue) (This)->lpVtbl->getResponseHeader(This,bstrHeader,pbstrValue)")
cpp_quote("#define IXMLHttpRequest_getAllResponseHeaders(This,pbstrHeaders) (This)->lpVtbl->getAllResponseHeaders(This,pbstrHeaders)")
cpp_quote("#define IXMLHttpRequest_send(This,varBody) (This)->lpVtbl->send(This,varBody)")
cpp_quote("#define IXMLHttpRequest_abort(This) (This)->lpVtbl->abort(This)")
cpp_quote("#define IXMLHttpRequest_get_status(This,plStatus) (This)->lpVtbl->get_status(This,plStatus)")
cpp_quote("#define IXMLHttpRequest_get_statusText(This,pbstrStatus) (This)->lpVtbl->get_statusText(This,pbstrStatus)")
cpp_quote("#define IXMLHttpRequest_get_responseXML(This,ppBody) (This)->lpVtbl->get_responseXML(This,ppBody)")
cpp_quote("#define IXMLHttpRequest_get_responseText(This,pbstrBody) (This)->lpVtbl->get_responseText(This,pbstrBody)")
cpp_quote("#define IXMLHttpRequest_get_responseBody(This,pvarBody) (This)->lpVtbl->get_responseBody(This,pvarBody)")
cpp_quote("#define IXMLHttpRequest_get_responseStream(This,pvarBody) (This)->lpVtbl->get_responseStream(This,pvarBody)")
cpp_quote("#define IXMLHttpRequest_get_readyState(This,plState) (This)->lpVtbl->get_readyState(This,plState)")
cpp_quote("#define IXMLHttpRequest_put_onreadystatechange(This,pReadyStateSink) (This)->lpVtbl->put_onreadystatechange(This,pReadyStateSink)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_open_Proxy(IXMLHttpRequest *This,BSTR bstrMethod,BSTR bstrUrl,VARIANT varAsync,VARIANT bstrUser,VARIANT bstrPassword);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_open_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_setRequestHeader_Proxy(IXMLHttpRequest *This,BSTR bstrHeader,BSTR bstrValue);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_setRequestHeader_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_getResponseHeader_Proxy(IXMLHttpRequest *This,BSTR bstrHeader,BSTR *pbstrValue);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_getResponseHeader_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_getAllResponseHeaders_Proxy(IXMLHttpRequest *This,BSTR *pbstrHeaders);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_getAllResponseHeaders_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_send_Proxy(IXMLHttpRequest *This,VARIANT varBody);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_send_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_abort_Proxy(IXMLHttpRequest *This);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_abort_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_get_status_Proxy(IXMLHttpRequest *This,LONG *plStatus);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_get_status_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_get_statusText_Proxy(IXMLHttpRequest *This,BSTR *pbstrStatus);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_get_statusText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_get_responseXML_Proxy(IXMLHttpRequest *This,IDispatch **ppBody);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_get_responseXML_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_get_responseText_Proxy(IXMLHttpRequest *This,BSTR *pbstrBody);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_get_responseText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_get_responseBody_Proxy(IXMLHttpRequest *This,VARIANT *pvarBody);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_get_responseBody_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_get_responseStream_Proxy(IXMLHttpRequest *This,VARIANT *pvarBody);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_get_responseStream_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_get_readyState_Proxy(IXMLHttpRequest *This,LONG *plState);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLHttpRequest_put_onreadystatechange_Proxy(IXMLHttpRequest *This,IDispatch *pReadyStateSink);")
cpp_quote("  void __RPC_STUB IXMLHttpRequest_put_onreadystatechange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  EXTERN_C const CLSID CLSID_XMLHTTPRequest;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class XMLHTTPRequest;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDSOControl_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDSOControl_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDSOControl;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDSOControl : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_XMLDocument(IXMLDOMDocument **ppDoc) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_XMLDocument(IXMLDOMDocument *ppDoc) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_JavaDSOCompatible(WINBOOL *fJavaDSOCompatible) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_JavaDSOCompatible(WINBOOL fJavaDSOCompatible) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_readyState(LONG *state) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDSOControlVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDSOControl *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDSOControl *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDSOControl *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDSOControl *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDSOControl *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDSOControl *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDSOControl *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_XMLDocument)(IXMLDSOControl *This,IXMLDOMDocument **ppDoc);")
cpp_quote("      HRESULT (WINAPI *put_XMLDocument)(IXMLDSOControl *This,IXMLDOMDocument *ppDoc);")
cpp_quote("      HRESULT (WINAPI *get_JavaDSOCompatible)(IXMLDSOControl *This,WINBOOL *fJavaDSOCompatible);")
cpp_quote("      HRESULT (WINAPI *put_JavaDSOCompatible)(IXMLDSOControl *This,WINBOOL fJavaDSOCompatible);")
cpp_quote("      HRESULT (WINAPI *get_readyState)(IXMLDSOControl *This,LONG *state);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDSOControlVtbl;")
cpp_quote("  struct IXMLDSOControl {")
cpp_quote("    CONST_VTBL struct IXMLDSOControlVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDSOControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDSOControl_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDSOControl_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDSOControl_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDSOControl_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDSOControl_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDSOControl_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDSOControl_get_XMLDocument(This,ppDoc) (This)->lpVtbl->get_XMLDocument(This,ppDoc)")
cpp_quote("#define IXMLDSOControl_put_XMLDocument(This,ppDoc) (This)->lpVtbl->put_XMLDocument(This,ppDoc)")
cpp_quote("#define IXMLDSOControl_get_JavaDSOCompatible(This,fJavaDSOCompatible) (This)->lpVtbl->get_JavaDSOCompatible(This,fJavaDSOCompatible)")
cpp_quote("#define IXMLDSOControl_put_JavaDSOCompatible(This,fJavaDSOCompatible) (This)->lpVtbl->put_JavaDSOCompatible(This,fJavaDSOCompatible)")
cpp_quote("#define IXMLDSOControl_get_readyState(This,state) (This)->lpVtbl->get_readyState(This,state)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDSOControl_get_XMLDocument_Proxy(IXMLDSOControl *This,IXMLDOMDocument **ppDoc);")
cpp_quote("  void __RPC_STUB IXMLDSOControl_get_XMLDocument_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDSOControl_put_XMLDocument_Proxy(IXMLDSOControl *This,IXMLDOMDocument *ppDoc);")
cpp_quote("  void __RPC_STUB IXMLDSOControl_put_XMLDocument_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDSOControl_get_JavaDSOCompatible_Proxy(IXMLDSOControl *This,WINBOOL *fJavaDSOCompatible);")
cpp_quote("  void __RPC_STUB IXMLDSOControl_get_JavaDSOCompatible_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDSOControl_put_JavaDSOCompatible_Proxy(IXMLDSOControl *This,WINBOOL fJavaDSOCompatible);")
cpp_quote("  void __RPC_STUB IXMLDSOControl_put_JavaDSOCompatible_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDSOControl_get_readyState_Proxy(IXMLDSOControl *This,LONG *state);")
cpp_quote("  void __RPC_STUB IXMLDSOControl_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  EXTERN_C const CLSID CLSID_XMLDSOControl;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class XMLDSOControl;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLElementCollection_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLElementCollection_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLElementCollection;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLElementCollection : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI put_length(LONG v) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_length(LONG *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get__newEnum(IUnknown **ppUnk) = 0;")
cpp_quote("    virtual HRESULT WINAPI item(VARIANT var1,VARIANT var2,IDispatch **ppDisp) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLElementCollectionVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLElementCollection *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLElementCollection *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLElementCollection *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLElementCollection *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLElementCollection *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLElementCollection *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLElementCollection *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *put_length)(IXMLElementCollection *This,LONG v);")
cpp_quote("      HRESULT (WINAPI *get_length)(IXMLElementCollection *This,LONG *p);")
cpp_quote("      HRESULT (WINAPI *get__newEnum)(IXMLElementCollection *This,IUnknown **ppUnk);")
cpp_quote("      HRESULT (WINAPI *item)(IXMLElementCollection *This,VARIANT var1,VARIANT var2,IDispatch **ppDisp);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLElementCollectionVtbl;")
cpp_quote("  struct IXMLElementCollection {")
cpp_quote("    CONST_VTBL struct IXMLElementCollectionVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLElementCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLElementCollection_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLElementCollection_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLElementCollection_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLElementCollection_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLElementCollection_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLElementCollection_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLElementCollection_put_length(This,v) (This)->lpVtbl->put_length(This,v)")
cpp_quote("#define IXMLElementCollection_get_length(This,p) (This)->lpVtbl->get_length(This,p)")
cpp_quote("#define IXMLElementCollection_get__newEnum(This,ppUnk) (This)->lpVtbl->get__newEnum(This,ppUnk)")
cpp_quote("#define IXMLElementCollection_item(This,var1,var2,ppDisp) (This)->lpVtbl->item(This,var1,var2,ppDisp)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLElementCollection_put_length_Proxy(IXMLElementCollection *This,LONG v);")
cpp_quote("  void __RPC_STUB IXMLElementCollection_put_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElementCollection_get_length_Proxy(IXMLElementCollection *This,LONG *p);")
cpp_quote("  void __RPC_STUB IXMLElementCollection_get_length_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElementCollection_get__newEnum_Proxy(IXMLElementCollection *This,IUnknown **ppUnk);")
cpp_quote("  void __RPC_STUB IXMLElementCollection_get__newEnum_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElementCollection_item_Proxy(IXMLElementCollection *This,VARIANT var1,VARIANT var2,IDispatch **ppDisp);")
cpp_quote("  void __RPC_STUB IXMLElementCollection_item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDocument_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDocument_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDocument;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDocument : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_root(IXMLElement **p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_fileSize(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_fileModifiedDate(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_fileUpdatedDate(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_URL(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_URL(BSTR p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_mimeType(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_readyState(LONG *pl) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_charset(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_charset(BSTR p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_version(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_doctype(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_dtdURL(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI createElement(VARIANT vType,VARIANT var1,IXMLElement **ppElem) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDocumentVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDocument *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDocument *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDocument *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDocument *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDocument *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDocument *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDocument *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_root)(IXMLDocument *This,IXMLElement **p);")
cpp_quote("      HRESULT (WINAPI *get_fileSize)(IXMLDocument *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_fileModifiedDate)(IXMLDocument *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_fileUpdatedDate)(IXMLDocument *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_URL)(IXMLDocument *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *put_URL)(IXMLDocument *This,BSTR p);")
cpp_quote("      HRESULT (WINAPI *get_mimeType)(IXMLDocument *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_readyState)(IXMLDocument *This,LONG *pl);")
cpp_quote("      HRESULT (WINAPI *get_charset)(IXMLDocument *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *put_charset)(IXMLDocument *This,BSTR p);")
cpp_quote("      HRESULT (WINAPI *get_version)(IXMLDocument *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_doctype)(IXMLDocument *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_dtdURL)(IXMLDocument *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *createElement)(IXMLDocument *This,VARIANT vType,VARIANT var1,IXMLElement **ppElem);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDocumentVtbl;")
cpp_quote("  struct IXMLDocument {")
cpp_quote("    CONST_VTBL struct IXMLDocumentVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDocument_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDocument_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDocument_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDocument_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDocument_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDocument_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDocument_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDocument_get_root(This,p) (This)->lpVtbl->get_root(This,p)")
cpp_quote("#define IXMLDocument_get_fileSize(This,p) (This)->lpVtbl->get_fileSize(This,p)")
cpp_quote("#define IXMLDocument_get_fileModifiedDate(This,p) (This)->lpVtbl->get_fileModifiedDate(This,p)")
cpp_quote("#define IXMLDocument_get_fileUpdatedDate(This,p) (This)->lpVtbl->get_fileUpdatedDate(This,p)")
cpp_quote("#define IXMLDocument_get_URL(This,p) (This)->lpVtbl->get_URL(This,p)")
cpp_quote("#define IXMLDocument_put_URL(This,p) (This)->lpVtbl->put_URL(This,p)")
cpp_quote("#define IXMLDocument_get_mimeType(This,p) (This)->lpVtbl->get_mimeType(This,p)")
cpp_quote("#define IXMLDocument_get_readyState(This,pl) (This)->lpVtbl->get_readyState(This,pl)")
cpp_quote("#define IXMLDocument_get_charset(This,p) (This)->lpVtbl->get_charset(This,p)")
cpp_quote("#define IXMLDocument_put_charset(This,p) (This)->lpVtbl->put_charset(This,p)")
cpp_quote("#define IXMLDocument_get_version(This,p) (This)->lpVtbl->get_version(This,p)")
cpp_quote("#define IXMLDocument_get_doctype(This,p) (This)->lpVtbl->get_doctype(This,p)")
cpp_quote("#define IXMLDocument_get_dtdURL(This,p) (This)->lpVtbl->get_dtdURL(This,p)")
cpp_quote("#define IXMLDocument_createElement(This,vType,var1,ppElem) (This)->lpVtbl->createElement(This,vType,var1,ppElem)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDocument_get_root_Proxy(IXMLDocument *This,IXMLElement **p);")
cpp_quote("  void __RPC_STUB IXMLDocument_get_root_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_get_fileSize_Proxy(IXMLDocument *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument_get_fileSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_get_fileModifiedDate_Proxy(IXMLDocument *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument_get_fileModifiedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_get_fileUpdatedDate_Proxy(IXMLDocument *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument_get_fileUpdatedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_get_URL_Proxy(IXMLDocument *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument_get_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_put_URL_Proxy(IXMLDocument *This,BSTR p);")
cpp_quote("  void __RPC_STUB IXMLDocument_put_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_get_mimeType_Proxy(IXMLDocument *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument_get_mimeType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_get_readyState_Proxy(IXMLDocument *This,LONG *pl);")
cpp_quote("  void __RPC_STUB IXMLDocument_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_get_charset_Proxy(IXMLDocument *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument_get_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_put_charset_Proxy(IXMLDocument *This,BSTR p);")
cpp_quote("  void __RPC_STUB IXMLDocument_put_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_get_version_Proxy(IXMLDocument *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument_get_version_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_get_doctype_Proxy(IXMLDocument *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument_get_doctype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_get_dtdURL_Proxy(IXMLDocument *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument_get_dtdURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument_createElement_Proxy(IXMLDocument *This,VARIANT vType,VARIANT var1,IXMLElement **ppElem);")
cpp_quote("  void __RPC_STUB IXMLDocument_createElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLDocument2_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLDocument2_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLDocument2;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLDocument2 : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_root(IXMLElement2 **p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_fileSize(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_fileModifiedDate(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_fileUpdatedDate(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_URL(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_URL(BSTR p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_mimeType(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_readyState(LONG *pl) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_charset(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_charset(BSTR p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_version(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_doctype(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_dtdURL(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI createElement(VARIANT vType,VARIANT var1,IXMLElement2 **ppElem) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_async(VARIANT_BOOL *pf) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_async(VARIANT_BOOL f) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLDocument2Vtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLDocument2 *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLDocument2 *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLDocument2 *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLDocument2 *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLDocument2 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLDocument2 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLDocument2 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_root)(IXMLDocument2 *This,IXMLElement2 **p);")
cpp_quote("      HRESULT (WINAPI *get_fileSize)(IXMLDocument2 *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_fileModifiedDate)(IXMLDocument2 *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_fileUpdatedDate)(IXMLDocument2 *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_URL)(IXMLDocument2 *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *put_URL)(IXMLDocument2 *This,BSTR p);")
cpp_quote("      HRESULT (WINAPI *get_mimeType)(IXMLDocument2 *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_readyState)(IXMLDocument2 *This,LONG *pl);")
cpp_quote("      HRESULT (WINAPI *get_charset)(IXMLDocument2 *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *put_charset)(IXMLDocument2 *This,BSTR p);")
cpp_quote("      HRESULT (WINAPI *get_version)(IXMLDocument2 *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_doctype)(IXMLDocument2 *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *get_dtdURL)(IXMLDocument2 *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *createElement)(IXMLDocument2 *This,VARIANT vType,VARIANT var1,IXMLElement2 **ppElem);")
cpp_quote("      HRESULT (WINAPI *get_async)(IXMLDocument2 *This,VARIANT_BOOL *pf);")
cpp_quote("      HRESULT (WINAPI *put_async)(IXMLDocument2 *This,VARIANT_BOOL f);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLDocument2Vtbl;")
cpp_quote("  struct IXMLDocument2 {")
cpp_quote("    CONST_VTBL struct IXMLDocument2Vtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLDocument2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLDocument2_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLDocument2_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLDocument2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLDocument2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLDocument2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLDocument2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLDocument2_get_root(This,p) (This)->lpVtbl->get_root(This,p)")
cpp_quote("#define IXMLDocument2_get_fileSize(This,p) (This)->lpVtbl->get_fileSize(This,p)")
cpp_quote("#define IXMLDocument2_get_fileModifiedDate(This,p) (This)->lpVtbl->get_fileModifiedDate(This,p)")
cpp_quote("#define IXMLDocument2_get_fileUpdatedDate(This,p) (This)->lpVtbl->get_fileUpdatedDate(This,p)")
cpp_quote("#define IXMLDocument2_get_URL(This,p) (This)->lpVtbl->get_URL(This,p)")
cpp_quote("#define IXMLDocument2_put_URL(This,p) (This)->lpVtbl->put_URL(This,p)")
cpp_quote("#define IXMLDocument2_get_mimeType(This,p) (This)->lpVtbl->get_mimeType(This,p)")
cpp_quote("#define IXMLDocument2_get_readyState(This,pl) (This)->lpVtbl->get_readyState(This,pl)")
cpp_quote("#define IXMLDocument2_get_charset(This,p) (This)->lpVtbl->get_charset(This,p)")
cpp_quote("#define IXMLDocument2_put_charset(This,p) (This)->lpVtbl->put_charset(This,p)")
cpp_quote("#define IXMLDocument2_get_version(This,p) (This)->lpVtbl->get_version(This,p)")
cpp_quote("#define IXMLDocument2_get_doctype(This,p) (This)->lpVtbl->get_doctype(This,p)")
cpp_quote("#define IXMLDocument2_get_dtdURL(This,p) (This)->lpVtbl->get_dtdURL(This,p)")
cpp_quote("#define IXMLDocument2_createElement(This,vType,var1,ppElem) (This)->lpVtbl->createElement(This,vType,var1,ppElem)")
cpp_quote("#define IXMLDocument2_get_async(This,pf) (This)->lpVtbl->get_async(This,pf)")
cpp_quote("#define IXMLDocument2_put_async(This,f) (This)->lpVtbl->put_async(This,f)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_root_Proxy(IXMLDocument2 *This,IXMLElement2 **p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_root_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_fileSize_Proxy(IXMLDocument2 *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_fileSize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_fileModifiedDate_Proxy(IXMLDocument2 *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_fileModifiedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_fileUpdatedDate_Proxy(IXMLDocument2 *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_fileUpdatedDate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_URL_Proxy(IXMLDocument2 *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_put_URL_Proxy(IXMLDocument2 *This,BSTR p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_put_URL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_mimeType_Proxy(IXMLDocument2 *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_mimeType_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_readyState_Proxy(IXMLDocument2 *This,LONG *pl);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_readyState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_charset_Proxy(IXMLDocument2 *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_put_charset_Proxy(IXMLDocument2 *This,BSTR p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_put_charset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_version_Proxy(IXMLDocument2 *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_version_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_doctype_Proxy(IXMLDocument2 *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_doctype_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_dtdURL_Proxy(IXMLDocument2 *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_dtdURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_createElement_Proxy(IXMLDocument2 *This,VARIANT vType,VARIANT var1,IXMLElement2 **ppElem);")
cpp_quote("  void __RPC_STUB IXMLDocument2_createElement_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_get_async_Proxy(IXMLDocument2 *This,VARIANT_BOOL *pf);")
cpp_quote("  void __RPC_STUB IXMLDocument2_get_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLDocument2_put_async_Proxy(IXMLDocument2 *This,VARIANT_BOOL f);")
cpp_quote("  void __RPC_STUB IXMLDocument2_put_async_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLElement_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLElement_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLElement;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLElement : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_tagName(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_tagName(BSTR p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_parent(IXMLElement **ppParent) = 0;")
cpp_quote("    virtual HRESULT WINAPI setAttribute(BSTR strPropertyName,VARIANT PropertyValue) = 0;")
cpp_quote("    virtual HRESULT WINAPI getAttribute(BSTR strPropertyName,VARIANT *PropertyValue) = 0;")
cpp_quote("    virtual HRESULT WINAPI removeAttribute(BSTR strPropertyName) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_children(IXMLElementCollection **pp) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_type(LONG *plType) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_text(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_text(BSTR p) = 0;")
cpp_quote("    virtual HRESULT WINAPI addChild(IXMLElement *pChildElem,LONG lIndex,LONG lReserved) = 0;")
cpp_quote("    virtual HRESULT WINAPI removeChild(IXMLElement *pChildElem) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLElementVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLElement *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLElement *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLElement *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLElement *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLElement *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLElement *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLElement *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_tagName)(IXMLElement *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *put_tagName)(IXMLElement *This,BSTR p);")
cpp_quote("      HRESULT (WINAPI *get_parent)(IXMLElement *This,IXMLElement **ppParent);")
cpp_quote("      HRESULT (WINAPI *setAttribute)(IXMLElement *This,BSTR strPropertyName,VARIANT PropertyValue);")
cpp_quote("      HRESULT (WINAPI *getAttribute)(IXMLElement *This,BSTR strPropertyName,VARIANT *PropertyValue);")
cpp_quote("      HRESULT (WINAPI *removeAttribute)(IXMLElement *This,BSTR strPropertyName);")
cpp_quote("      HRESULT (WINAPI *get_children)(IXMLElement *This,IXMLElementCollection **pp);")
cpp_quote("      HRESULT (WINAPI *get_type)(IXMLElement *This,LONG *plType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLElement *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLElement *This,BSTR p);")
cpp_quote("      HRESULT (WINAPI *addChild)(IXMLElement *This,IXMLElement *pChildElem,LONG lIndex,LONG lReserved);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLElement *This,IXMLElement *pChildElem);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLElementVtbl;")
cpp_quote("  struct IXMLElement {")
cpp_quote("    CONST_VTBL struct IXMLElementVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLElement_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLElement_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLElement_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLElement_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLElement_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLElement_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLElement_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLElement_get_tagName(This,p) (This)->lpVtbl->get_tagName(This,p)")
cpp_quote("#define IXMLElement_put_tagName(This,p) (This)->lpVtbl->put_tagName(This,p)")
cpp_quote("#define IXMLElement_get_parent(This,ppParent) (This)->lpVtbl->get_parent(This,ppParent)")
cpp_quote("#define IXMLElement_setAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->setAttribute(This,strPropertyName,PropertyValue)")
cpp_quote("#define IXMLElement_getAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->getAttribute(This,strPropertyName,PropertyValue)")
cpp_quote("#define IXMLElement_removeAttribute(This,strPropertyName) (This)->lpVtbl->removeAttribute(This,strPropertyName)")
cpp_quote("#define IXMLElement_get_children(This,pp) (This)->lpVtbl->get_children(This,pp)")
cpp_quote("#define IXMLElement_get_type(This,plType) (This)->lpVtbl->get_type(This,plType)")
cpp_quote("#define IXMLElement_get_text(This,p) (This)->lpVtbl->get_text(This,p)")
cpp_quote("#define IXMLElement_put_text(This,p) (This)->lpVtbl->put_text(This,p)")
cpp_quote("#define IXMLElement_addChild(This,pChildElem,lIndex,lReserved) (This)->lpVtbl->addChild(This,pChildElem,lIndex,lReserved)")
cpp_quote("#define IXMLElement_removeChild(This,pChildElem) (This)->lpVtbl->removeChild(This,pChildElem)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLElement_get_tagName_Proxy(IXMLElement *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLElement_get_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement_put_tagName_Proxy(IXMLElement *This,BSTR p);")
cpp_quote("  void __RPC_STUB IXMLElement_put_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement_get_parent_Proxy(IXMLElement *This,IXMLElement **ppParent);")
cpp_quote("  void __RPC_STUB IXMLElement_get_parent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement_setAttribute_Proxy(IXMLElement *This,BSTR strPropertyName,VARIANT PropertyValue);")
cpp_quote("  void __RPC_STUB IXMLElement_setAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement_getAttribute_Proxy(IXMLElement *This,BSTR strPropertyName,VARIANT *PropertyValue);")
cpp_quote("  void __RPC_STUB IXMLElement_getAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement_removeAttribute_Proxy(IXMLElement *This,BSTR strPropertyName);")
cpp_quote("  void __RPC_STUB IXMLElement_removeAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement_get_children_Proxy(IXMLElement *This,IXMLElementCollection **pp);")
cpp_quote("  void __RPC_STUB IXMLElement_get_children_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement_get_type_Proxy(IXMLElement *This,LONG *plType);")
cpp_quote("  void __RPC_STUB IXMLElement_get_type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement_get_text_Proxy(IXMLElement *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLElement_get_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement_put_text_Proxy(IXMLElement *This,BSTR p);")
cpp_quote("  void __RPC_STUB IXMLElement_put_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement_addChild_Proxy(IXMLElement *This,IXMLElement *pChildElem,LONG lIndex,LONG lReserved);")
cpp_quote("  void __RPC_STUB IXMLElement_addChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement_removeChild_Proxy(IXMLElement *This,IXMLElement *pChildElem);")
cpp_quote("  void __RPC_STUB IXMLElement_removeChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLElement2_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLElement2_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLElement2;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLElement2 : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_tagName(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_tagName(BSTR p) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_parent(IXMLElement2 **ppParent) = 0;")
cpp_quote("    virtual HRESULT WINAPI setAttribute(BSTR strPropertyName,VARIANT PropertyValue) = 0;")
cpp_quote("    virtual HRESULT WINAPI getAttribute(BSTR strPropertyName,VARIANT *PropertyValue) = 0;")
cpp_quote("    virtual HRESULT WINAPI removeAttribute(BSTR strPropertyName) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_children(IXMLElementCollection **pp) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_type(LONG *plType) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_text(BSTR *p) = 0;")
cpp_quote("    virtual HRESULT WINAPI put_text(BSTR p) = 0;")
cpp_quote("    virtual HRESULT WINAPI addChild(IXMLElement2 *pChildElem,LONG lIndex,LONG lReserved) = 0;")
cpp_quote("    virtual HRESULT WINAPI removeChild(IXMLElement2 *pChildElem) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_attributes(IXMLElementCollection **pp) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLElement2Vtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLElement2 *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLElement2 *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLElement2 *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLElement2 *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLElement2 *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLElement2 *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLElement2 *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_tagName)(IXMLElement2 *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *put_tagName)(IXMLElement2 *This,BSTR p);")
cpp_quote("      HRESULT (WINAPI *get_parent)(IXMLElement2 *This,IXMLElement2 **ppParent);")
cpp_quote("      HRESULT (WINAPI *setAttribute)(IXMLElement2 *This,BSTR strPropertyName,VARIANT PropertyValue);")
cpp_quote("      HRESULT (WINAPI *getAttribute)(IXMLElement2 *This,BSTR strPropertyName,VARIANT *PropertyValue);")
cpp_quote("      HRESULT (WINAPI *removeAttribute)(IXMLElement2 *This,BSTR strPropertyName);")
cpp_quote("      HRESULT (WINAPI *get_children)(IXMLElement2 *This,IXMLElementCollection **pp);")
cpp_quote("      HRESULT (WINAPI *get_type)(IXMLElement2 *This,LONG *plType);")
cpp_quote("      HRESULT (WINAPI *get_text)(IXMLElement2 *This,BSTR *p);")
cpp_quote("      HRESULT (WINAPI *put_text)(IXMLElement2 *This,BSTR p);")
cpp_quote("      HRESULT (WINAPI *addChild)(IXMLElement2 *This,IXMLElement2 *pChildElem,LONG lIndex,LONG lReserved);")
cpp_quote("      HRESULT (WINAPI *removeChild)(IXMLElement2 *This,IXMLElement2 *pChildElem);")
cpp_quote("      HRESULT (WINAPI *get_attributes)(IXMLElement2 *This,IXMLElementCollection **pp);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLElement2Vtbl;")
cpp_quote("  struct IXMLElement2 {")
cpp_quote("    CONST_VTBL struct IXMLElement2Vtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLElement2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLElement2_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLElement2_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLElement2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLElement2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLElement2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLElement2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLElement2_get_tagName(This,p) (This)->lpVtbl->get_tagName(This,p)")
cpp_quote("#define IXMLElement2_put_tagName(This,p) (This)->lpVtbl->put_tagName(This,p)")
cpp_quote("#define IXMLElement2_get_parent(This,ppParent) (This)->lpVtbl->get_parent(This,ppParent)")
cpp_quote("#define IXMLElement2_setAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->setAttribute(This,strPropertyName,PropertyValue)")
cpp_quote("#define IXMLElement2_getAttribute(This,strPropertyName,PropertyValue) (This)->lpVtbl->getAttribute(This,strPropertyName,PropertyValue)")
cpp_quote("#define IXMLElement2_removeAttribute(This,strPropertyName) (This)->lpVtbl->removeAttribute(This,strPropertyName)")
cpp_quote("#define IXMLElement2_get_children(This,pp) (This)->lpVtbl->get_children(This,pp)")
cpp_quote("#define IXMLElement2_get_type(This,plType) (This)->lpVtbl->get_type(This,plType)")
cpp_quote("#define IXMLElement2_get_text(This,p) (This)->lpVtbl->get_text(This,p)")
cpp_quote("#define IXMLElement2_put_text(This,p) (This)->lpVtbl->put_text(This,p)")
cpp_quote("#define IXMLElement2_addChild(This,pChildElem,lIndex,lReserved) (This)->lpVtbl->addChild(This,pChildElem,lIndex,lReserved)")
cpp_quote("#define IXMLElement2_removeChild(This,pChildElem) (This)->lpVtbl->removeChild(This,pChildElem)")
cpp_quote("#define IXMLElement2_get_attributes(This,pp) (This)->lpVtbl->get_attributes(This,pp)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLElement2_get_tagName_Proxy(IXMLElement2 *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLElement2_get_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_put_tagName_Proxy(IXMLElement2 *This,BSTR p);")
cpp_quote("  void __RPC_STUB IXMLElement2_put_tagName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_get_parent_Proxy(IXMLElement2 *This,IXMLElement2 **ppParent);")
cpp_quote("  void __RPC_STUB IXMLElement2_get_parent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_setAttribute_Proxy(IXMLElement2 *This,BSTR strPropertyName,VARIANT PropertyValue);")
cpp_quote("  void __RPC_STUB IXMLElement2_setAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_getAttribute_Proxy(IXMLElement2 *This,BSTR strPropertyName,VARIANT *PropertyValue);")
cpp_quote("  void __RPC_STUB IXMLElement2_getAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_removeAttribute_Proxy(IXMLElement2 *This,BSTR strPropertyName);")
cpp_quote("  void __RPC_STUB IXMLElement2_removeAttribute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_get_children_Proxy(IXMLElement2 *This,IXMLElementCollection **pp);")
cpp_quote("  void __RPC_STUB IXMLElement2_get_children_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_get_type_Proxy(IXMLElement2 *This,LONG *plType);")
cpp_quote("  void __RPC_STUB IXMLElement2_get_type_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_get_text_Proxy(IXMLElement2 *This,BSTR *p);")
cpp_quote("  void __RPC_STUB IXMLElement2_get_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_put_text_Proxy(IXMLElement2 *This,BSTR p);")
cpp_quote("  void __RPC_STUB IXMLElement2_put_text_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_addChild_Proxy(IXMLElement2 *This,IXMLElement2 *pChildElem,LONG lIndex,LONG lReserved);")
cpp_quote("  void __RPC_STUB IXMLElement2_addChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_removeChild_Proxy(IXMLElement2 *This,IXMLElement2 *pChildElem);")
cpp_quote("  void __RPC_STUB IXMLElement2_removeChild_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLElement2_get_attributes_Proxy(IXMLElement2 *This,IXMLElementCollection **pp);")
cpp_quote("  void __RPC_STUB IXMLElement2_get_attributes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLAttribute_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLAttribute_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLAttribute;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLAttribute : public IDispatch {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI get_name(BSTR *n) = 0;")
cpp_quote("    virtual HRESULT WINAPI get_value(BSTR *v) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLAttributeVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLAttribute *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLAttribute *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLAttribute *This);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfoCount)(IXMLAttribute *This,UINT *pctinfo);")
cpp_quote("      HRESULT (WINAPI *GetTypeInfo)(IXMLAttribute *This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo);")
cpp_quote("      HRESULT (WINAPI *GetIDsOfNames)(IXMLAttribute *This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId);")
cpp_quote("      HRESULT (WINAPI *Invoke)(IXMLAttribute *This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr);")
cpp_quote("      HRESULT (WINAPI *get_name)(IXMLAttribute *This,BSTR *n);")
cpp_quote("      HRESULT (WINAPI *get_value)(IXMLAttribute *This,BSTR *v);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLAttributeVtbl;")
cpp_quote("  struct IXMLAttribute {")
cpp_quote("    CONST_VTBL struct IXMLAttributeVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLAttribute_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLAttribute_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLAttribute_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLAttribute_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)")
cpp_quote("#define IXMLAttribute_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)")
cpp_quote("#define IXMLAttribute_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)")
cpp_quote("#define IXMLAttribute_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)")
cpp_quote("#define IXMLAttribute_get_name(This,n) (This)->lpVtbl->get_name(This,n)")
cpp_quote("#define IXMLAttribute_get_value(This,v) (This)->lpVtbl->get_value(This,v)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLAttribute_get_name_Proxy(IXMLAttribute *This,BSTR *n);")
cpp_quote("  void __RPC_STUB IXMLAttribute_get_name_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IXMLAttribute_get_value_Proxy(IXMLAttribute *This,BSTR *v);")
cpp_quote("  void __RPC_STUB IXMLAttribute_get_value_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IXMLError_INTERFACE_DEFINED__")
cpp_quote("#define __IXMLError_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IXMLError;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IXMLError : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetErrorInfo(XML_ERROR *pErrorReturn) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IXMLErrorVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IXMLError *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IXMLError *This);")
cpp_quote("      ULONG (WINAPI *Release)(IXMLError *This);")
cpp_quote("      HRESULT (WINAPI *GetErrorInfo)(IXMLError *This,XML_ERROR *pErrorReturn);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IXMLErrorVtbl;")
cpp_quote("  struct IXMLError {")
cpp_quote("    CONST_VTBL struct IXMLErrorVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IXMLError_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IXMLError_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IXMLError_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IXMLError_GetErrorInfo(This,pErrorReturn) (This)->lpVtbl->GetErrorInfo(This,pErrorReturn)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IXMLError_GetErrorInfo_Proxy(IXMLError *This,XML_ERROR *pErrorReturn);")
cpp_quote("  void __RPC_STUB IXMLError_GetErrorInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  EXTERN_C const CLSID CLSID_XMLDocument;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class XMLDocument;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("#pragma pop_macro(\"abort\")")
