Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/msxml3/dispex.c | 33 +++------- dlls/msxml3/msxml_dispex.h | 116 ++++++++++++++++++++++++++++++++++++ dlls/msxml3/msxml_private.h | 86 +------------------------- 3 files changed, 127 insertions(+), 108 deletions(-) create mode 100644 dlls/msxml3/msxml_dispex.h
diff --git a/dlls/msxml3/dispex.c b/dlls/msxml3/dispex.c index b1fb72847e7..2ee03241946 100644 --- a/dlls/msxml3/dispex.c +++ b/dlls/msxml3/dispex.c @@ -18,30 +18,16 @@
#define COBJMACROS
-#include "config.h" - #include <stdarg.h> -#ifdef HAVE_LIBXML2 -# include <libxml/parser.h> -# include <libxml/xmlerror.h> -#endif - -#include "windef.h" -#include "winbase.h" -#include "winuser.h" -#include "winnls.h" -#include "ole2.h" -#include "msxml6.h" -#include "msxml6did.h" -#include "wininet.h" -#include "urlmon.h" -#include "winreg.h" -#include "shlwapi.h" + +#include "msxml2.h" +#include "msxml2did.h" +#include "dispex.h"
#include "wine/debug.h" -#include "wine/unicode.h" +#include "wine/heap.h"
-#include "msxml_private.h" +#include "msxml_dispex.h"
WINE_DEFAULT_DEBUG_CHANNEL(msxml);
@@ -54,7 +40,6 @@ static CRITICAL_SECTION_DEBUG cs_dispex_static_data_dbg = }; static CRITICAL_SECTION cs_dispex_static_data = { &cs_dispex_static_data_dbg, -1, 0, 0, 0, 0 };
- enum lib_version_t { LibXml = 0, @@ -258,7 +243,7 @@ static int dispid_cmp(const void *p1, const void *p2)
static int func_name_cmp(const void *p1, const void *p2) { - return strcmpiW((*(func_info_t* const*)p1)->name, (*(func_info_t* const*)p2)->name); + return lstrcmpiW((*(func_info_t* const*)p1)->name, (*(func_info_t* const*)p2)->name); }
static dispex_data_t *preprocess_dispex_data(DispatchEx *This) @@ -439,9 +424,9 @@ static HRESULT WINAPI DispatchEx_GetDispID(IDispatchEx *iface, BSTR bstrName, DW while(min <= max) { n = (min+max)/2;
- c = strcmpiW(data->name_table[n]->name, bstrName); + c = lstrcmpiW(data->name_table[n]->name, bstrName); if(!c) { - if((grfdex & fdexNameCaseSensitive) && strcmpW(data->name_table[n]->name, bstrName)) + if((grfdex & fdexNameCaseSensitive) && lstrcmpW(data->name_table[n]->name, bstrName)) break;
*pid = data->name_table[n]->id; diff --git a/dlls/msxml3/msxml_dispex.h b/dlls/msxml3/msxml_dispex.h new file mode 100644 index 00000000000..c9dbc29ddc5 --- /dev/null +++ b/dlls/msxml3/msxml_dispex.h @@ -0,0 +1,116 @@ +/* + * Copyright 2005 Mike McCormack + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __MSXML_DISPEX__ +#define __MSXML_DISPEX__ + +#include "dispex.h" + +#include "wine/heap.h" +#include "wine/list.h" + +typedef enum +{ + MSXML_DEFAULT = 0, + MSXML2 = 20, + MSXML26 = 26, + MSXML3 = 30, + MSXML4 = 40, + MSXML6 = 60 +} MSXML_VERSION; + +typedef enum tid_t +{ + NULL_tid, + IXMLDOMAttribute_tid, + IXMLDOMCDATASection_tid, + IXMLDOMComment_tid, + IXMLDOMDocument_tid, + IXMLDOMDocument2_tid, + IXMLDOMDocument3_tid, + IXMLDOMDocumentFragment_tid, + IXMLDOMDocumentType_tid, + IXMLDOMElement_tid, + IXMLDOMEntityReference_tid, + IXMLDOMImplementation_tid, + IXMLDOMNamedNodeMap_tid, + IXMLDOMNode_tid, + IXMLDOMNodeList_tid, + IXMLDOMParseError2_tid, + IXMLDOMProcessingInstruction_tid, + IXMLDOMSchemaCollection_tid, + IXMLDOMSchemaCollection2_tid, + IXMLDOMSelection_tid, + IXMLDOMText_tid, + IXMLElement_tid, + IXMLDocument_tid, + IXMLHTTPRequest_tid, + IXSLProcessor_tid, + IXSLTemplate_tid, + IVBSAXAttributes_tid, + IVBSAXContentHandler_tid, + IVBSAXDeclHandler_tid, + IVBSAXDTDHandler_tid, + IVBSAXEntityResolver_tid, + IVBSAXErrorHandler_tid, + IVBSAXLexicalHandler_tid, + IVBSAXLocator_tid, + IVBSAXXMLFilter_tid, + IVBSAXXMLReader_tid, + IMXAttributes_tid, + IMXReaderControl_tid, + IMXWriter_tid, + IVBMXNamespaceManager_tid, + IServerXMLHTTPRequest_tid, + LAST_tid +} tid_t; + +extern HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo) DECLSPEC_HIDDEN; +extern void release_typelib(void) DECLSPEC_HIDDEN; + +typedef struct dispex_data_t dispex_data_t; + +typedef struct +{ + HRESULT (*get_dispid)(IUnknown*,BSTR,DWORD,DISPID*); + HRESULT (*invoke)(IUnknown*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*); +} dispex_static_data_vtbl_t; + +typedef struct +{ + const dispex_static_data_vtbl_t *vtbl; + const tid_t disp_tid; + dispex_data_t *data; + const tid_t* const iface_tids; +} dispex_static_data_t; + +typedef struct +{ + IDispatchEx IDispatchEx_iface; + + IUnknown *outer; + + dispex_static_data_t *data; +} DispatchEx; + +void init_dispex(DispatchEx*,IUnknown*,dispex_static_data_t*) DECLSPEC_HIDDEN; +void release_dispex(DispatchEx*) DECLSPEC_HIDDEN; +BOOL dispex_query_interface(DispatchEx*,REFIID,void**) DECLSPEC_HIDDEN; +const IID *get_riid_from_tid(enum tid_t tid) DECLSPEC_HIDDEN; + +#endif /* __MSXML_DISPEX__ */ diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h index a59e00bf2b3..41e16e4406c 100644 --- a/dlls/msxml3/msxml_private.h +++ b/dlls/msxml3/msxml_private.h @@ -27,67 +27,15 @@ #include "wine/heap.h" #include "wine/list.h"
+#include "msxml_dispex.h" + #ifndef __WINE_CONFIG_H # error You must include config.h to use this header #endif
-typedef enum { - MSXML_DEFAULT = 0, - MSXML2 = 20, - MSXML26 = 26, - MSXML3 = 30, - MSXML4 = 40, - MSXML6 = 60 -} MSXML_VERSION; - extern const CLSID * DOMDocument_version(MSXML_VERSION v) DECLSPEC_HIDDEN; extern const CLSID * SchemaCache_version(MSXML_VERSION v) DECLSPEC_HIDDEN;
-/* typelibs */ -typedef enum tid_t { - NULL_tid, - IXMLDOMAttribute_tid, - IXMLDOMCDATASection_tid, - IXMLDOMComment_tid, - IXMLDOMDocument_tid, - IXMLDOMDocument2_tid, - IXMLDOMDocument3_tid, - IXMLDOMDocumentFragment_tid, - IXMLDOMDocumentType_tid, - IXMLDOMElement_tid, - IXMLDOMEntityReference_tid, - IXMLDOMImplementation_tid, - IXMLDOMNamedNodeMap_tid, - IXMLDOMNode_tid, - IXMLDOMNodeList_tid, - IXMLDOMParseError2_tid, - IXMLDOMProcessingInstruction_tid, - IXMLDOMSchemaCollection_tid, - IXMLDOMSchemaCollection2_tid, - IXMLDOMSelection_tid, - IXMLDOMText_tid, - IXMLElement_tid, - IXMLDocument_tid, - IXMLHTTPRequest_tid, - IXSLProcessor_tid, - IXSLTemplate_tid, - IVBSAXAttributes_tid, - IVBSAXContentHandler_tid, - IVBSAXDeclHandler_tid, - IVBSAXDTDHandler_tid, - IVBSAXEntityResolver_tid, - IVBSAXErrorHandler_tid, - IVBSAXLexicalHandler_tid, - IVBSAXLocator_tid, - IVBSAXXMLFilter_tid, - IVBSAXXMLReader_tid, - IMXAttributes_tid, - IMXReaderControl_tid, - IMXWriter_tid, - IVBMXNamespaceManager_tid, - IServerXMLHTTPRequest_tid, - LAST_tid -} tid_t;
/* The XDR datatypes (urn:schemas-microsoft-com:datatypes) * These are actually valid for XSD schemas as well @@ -134,38 +82,8 @@ typedef enum _XDR_DT { LAST_DT } XDR_DT;
-extern HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo) DECLSPEC_HIDDEN; -extern void release_typelib(void) DECLSPEC_HIDDEN; - -typedef struct dispex_data_t dispex_data_t; - -typedef struct { - HRESULT (*get_dispid)(IUnknown*,BSTR,DWORD,DISPID*); - HRESULT (*invoke)(IUnknown*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*); -} dispex_static_data_vtbl_t; - -typedef struct { - const dispex_static_data_vtbl_t *vtbl; - const tid_t disp_tid; - dispex_data_t *data; - const tid_t* const iface_tids; -} dispex_static_data_t; - -typedef struct { - IDispatchEx IDispatchEx_iface; - - IUnknown *outer; - - dispex_static_data_t *data; -} DispatchEx; - extern HINSTANCE MSXML_hInstance DECLSPEC_HIDDEN;
-void init_dispex(DispatchEx*,IUnknown*,dispex_static_data_t*) DECLSPEC_HIDDEN; -void release_dispex(DispatchEx*) DECLSPEC_HIDDEN; -BOOL dispex_query_interface(DispatchEx*,REFIID,void**) DECLSPEC_HIDDEN; -const IID *get_riid_from_tid(enum tid_t tid) DECLSPEC_HIDDEN; - /* memory allocation functions */
static inline void* __WINE_ALLOC_SIZE(2) heap_realloc_zero(void *mem, size_t size)