2007-12-30 10:49:17 +00:00
|
|
|
/*
|
2010-03-01 11:10:15 +00:00
|
|
|
* Common definitions
|
2007-12-30 10:49:17 +00:00
|
|
|
*
|
|
|
|
* 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_PRIVATE__
|
|
|
|
#define __MSXML_PRIVATE__
|
|
|
|
|
2008-09-08 16:51:03 +00:00
|
|
|
#include "dispex.h"
|
|
|
|
|
|
|
|
#include "wine/unicode.h"
|
|
|
|
|
2007-12-30 10:49:17 +00:00
|
|
|
#ifndef __WINE_CONFIG_H
|
|
|
|
# error You must include config.h to use this header
|
|
|
|
#endif
|
|
|
|
|
2009-09-05 15:02:49 +00:00
|
|
|
/* typelibs */
|
|
|
|
typedef enum tid_t {
|
|
|
|
IXMLDOMAttribute_tid,
|
|
|
|
IXMLDOMCDATASection_tid,
|
|
|
|
IXMLDOMComment_tid,
|
|
|
|
IXMLDOMDocument_tid,
|
|
|
|
IXMLDOMDocument2_tid,
|
|
|
|
IXMLDOMDocumentFragment_tid,
|
|
|
|
IXMLDOMElement_tid,
|
|
|
|
IXMLDOMEntityReference_tid,
|
|
|
|
IXMLDOMImplementation_tid,
|
|
|
|
IXMLDOMNamedNodeMap_tid,
|
|
|
|
IXMLDOMNode_tid,
|
|
|
|
IXMLDOMNodeList_tid,
|
|
|
|
IXMLDOMParseError_tid,
|
|
|
|
IXMLDOMProcessingInstruction_tid,
|
|
|
|
IXMLDOMSchemaCollection_tid,
|
|
|
|
IXMLDOMSelection_tid,
|
|
|
|
IXMLDOMText_tid,
|
|
|
|
IXMLElement_tid,
|
|
|
|
IXMLDocument_tid,
|
|
|
|
IXMLHTTPRequest_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,
|
|
|
|
LAST_tid
|
|
|
|
} tid_t;
|
|
|
|
|
|
|
|
extern HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo);
|
|
|
|
extern void release_typelib(void);
|
|
|
|
|
|
|
|
typedef struct dispex_data_t dispex_data_t;
|
|
|
|
typedef struct dispex_dynamic_data_t dispex_dynamic_data_t;
|
|
|
|
|
|
|
|
#define MSXML_DISPID_CUSTOM_MIN 0x60000000
|
|
|
|
#define MSXML_DISPID_CUSTOM_MAX 0x6fffffff
|
|
|
|
|
|
|
|
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 {
|
|
|
|
const IDispatchExVtbl *lpIDispatchExVtbl;
|
|
|
|
|
|
|
|
IUnknown *outer;
|
|
|
|
|
|
|
|
dispex_static_data_t *data;
|
|
|
|
dispex_dynamic_data_t *dynamic_data;
|
|
|
|
} DispatchEx;
|
|
|
|
|
|
|
|
void init_dispex(DispatchEx*,IUnknown*,dispex_static_data_t*);
|
|
|
|
BOOL dispex_query_interface(DispatchEx*,REFIID,void**);
|
|
|
|
|
2007-12-30 10:49:17 +00:00
|
|
|
#ifdef HAVE_LIBXML2
|
|
|
|
|
|
|
|
#ifdef HAVE_LIBXML_PARSER_H
|
|
|
|
#include <libxml/parser.h>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* constructors */
|
2008-09-08 16:51:03 +00:00
|
|
|
extern IUnknown *create_domdoc( xmlNodePtr document );
|
2007-12-30 10:49:17 +00:00
|
|
|
extern IUnknown *create_xmldoc( void );
|
|
|
|
extern IXMLDOMNode *create_node( xmlNodePtr node );
|
2009-09-05 15:02:49 +00:00
|
|
|
extern IUnknown *create_element( xmlNodePtr element );
|
2007-12-30 10:49:17 +00:00
|
|
|
extern IUnknown *create_attribute( xmlNodePtr attribute );
|
|
|
|
extern IUnknown *create_text( xmlNodePtr text );
|
|
|
|
extern IUnknown *create_pi( xmlNodePtr pi );
|
|
|
|
extern IUnknown *create_comment( xmlNodePtr comment );
|
2008-09-08 16:51:03 +00:00
|
|
|
extern IUnknown *create_cdata( xmlNodePtr text );
|
2007-12-30 10:49:17 +00:00
|
|
|
extern IXMLDOMNodeList *create_children_nodelist( xmlNodePtr );
|
|
|
|
extern IXMLDOMNamedNodeMap *create_nodemap( IXMLDOMNode *node );
|
2009-10-19 18:58:31 +00:00
|
|
|
extern IUnknown *create_doc_Implementation(void);
|
2008-09-08 16:51:03 +00:00
|
|
|
extern IUnknown *create_doc_fragment( xmlNodePtr fragment );
|
|
|
|
extern IUnknown *create_doc_entity_ref( xmlNodePtr entity );
|
2007-12-30 10:49:17 +00:00
|
|
|
|
|
|
|
extern HRESULT queryresult_create( xmlNodePtr, LPWSTR, IXMLDOMNodeList ** );
|
|
|
|
|
|
|
|
/* data accessors */
|
|
|
|
xmlNodePtr xmlNodePtr_from_domnode( IXMLDOMNode *iface, xmlElementType type );
|
|
|
|
|
|
|
|
/* helpers */
|
|
|
|
extern xmlChar *xmlChar_from_wchar( LPWSTR str );
|
|
|
|
|
|
|
|
extern LONG xmldoc_add_ref( xmlDocPtr doc );
|
|
|
|
extern LONG xmldoc_release( xmlDocPtr doc );
|
2009-01-04 10:48:19 +00:00
|
|
|
extern HRESULT xmldoc_add_orphan( xmlDocPtr doc, xmlNodePtr node );
|
|
|
|
extern HRESULT xmldoc_remove_orphan( xmlDocPtr doc, xmlNodePtr node );
|
Sync avifil, credui, crypt32, cryptdlg, cryptui, dnsapi, gdiplus, hhctrl, hnetcfg, iccvid, imaadp32, imm32, jscript, localspl, localui, mapi32, mciavi32, mcicda, mciqtz32, mciseq, mciwave, mshtml, msrle32, msvfw32, msvidc32, msxml3, oleacc, oleaut32 to Wine 1.2rc5 (Samuel Serapion, small changes by me)
Remove Esperanto and Walon languages from comctl32, comdlg32, mpr, msi, shlwapi, wininet
svn path=/trunk/; revision=47920
2010-07-01 11:09:47 +00:00
|
|
|
extern void xmldoc_link_xmldecl(xmlDocPtr doc, xmlNodePtr node);
|
|
|
|
extern xmlNodePtr xmldoc_unlink_xmldecl(xmlDocPtr doc);
|
2007-12-30 10:49:17 +00:00
|
|
|
|
2010-02-06 21:34:28 +00:00
|
|
|
extern HRESULT XMLElement_create( IUnknown *pUnkOuter, xmlNodePtr node, LPVOID *ppObj, BOOL own );
|
2007-12-30 10:49:17 +00:00
|
|
|
|
|
|
|
extern xmlDocPtr parse_xml(char *ptr, int len);
|
|
|
|
|
2008-09-08 16:51:03 +00:00
|
|
|
/* IXMLDOMNode Internal Structure */
|
|
|
|
typedef struct _xmlnode
|
|
|
|
{
|
2009-09-05 15:02:49 +00:00
|
|
|
DispatchEx dispex;
|
2008-09-08 16:51:03 +00:00
|
|
|
const struct IXMLDOMNodeVtbl *lpVtbl;
|
|
|
|
IUnknown *pUnkOuter;
|
|
|
|
LONG ref;
|
|
|
|
xmlNodePtr node;
|
|
|
|
} xmlnode;
|
|
|
|
|
|
|
|
static inline xmlnode *impl_from_IXMLDOMNode( IXMLDOMNode *iface )
|
|
|
|
{
|
|
|
|
return (xmlnode *)((char*)iface - FIELD_OFFSET(xmlnode, lpVtbl));
|
|
|
|
}
|
|
|
|
|
2009-08-22 15:10:54 +00:00
|
|
|
static inline IXMLDOMNode *IXMLDOMNode_from_impl(xmlnode *This)
|
|
|
|
{
|
|
|
|
return (IXMLDOMNode*)&This->lpVtbl;
|
|
|
|
}
|
|
|
|
|
2009-10-25 20:21:51 +00:00
|
|
|
extern void init_xmlnode(xmlnode*,xmlNodePtr,IUnknown*,dispex_static_data_t*);
|
2009-10-19 18:58:31 +00:00
|
|
|
extern void destroy_xmlnode(xmlnode*);
|
2009-08-22 15:10:54 +00:00
|
|
|
|
2008-09-08 16:51:03 +00:00
|
|
|
extern HRESULT DOMDocument_create_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument2 **document);
|
|
|
|
|
2009-08-22 15:10:54 +00:00
|
|
|
static inline BSTR bstr_from_xmlChar(const xmlChar *str)
|
|
|
|
{
|
|
|
|
BSTR ret = NULL;
|
|
|
|
|
|
|
|
if(str) {
|
|
|
|
DWORD len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)str, -1, NULL, 0);
|
|
|
|
ret = SysAllocStringLen(NULL, len-1);
|
|
|
|
if(ret)
|
|
|
|
MultiByteToWideChar( CP_UTF8, 0, (LPCSTR)str, -1, ret, len);
|
|
|
|
}
|
2010-03-01 11:10:15 +00:00
|
|
|
else
|
|
|
|
ret = SysAllocStringLen(NULL, 0);
|
2009-08-22 15:10:54 +00:00
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
2007-12-30 10:49:17 +00:00
|
|
|
#endif
|
|
|
|
|
2009-01-04 10:48:19 +00:00
|
|
|
void* libxslt_handle;
|
|
|
|
#ifdef SONAME_LIBXSLT
|
|
|
|
# ifdef HAVE_LIBXSLT_PATTERN_H
|
|
|
|
# include <libxslt/pattern.h>
|
|
|
|
# endif
|
|
|
|
# ifdef HAVE_LIBXSLT_TRANSFORM_H
|
|
|
|
# include <libxslt/transform.h>
|
|
|
|
# endif
|
|
|
|
# include <libxslt/xsltutils.h>
|
|
|
|
# include <libxslt/xsltInternals.h>
|
|
|
|
|
|
|
|
# define MAKE_FUNCPTR(f) extern typeof(f) * p##f
|
|
|
|
MAKE_FUNCPTR(xsltApplyStylesheet);
|
|
|
|
MAKE_FUNCPTR(xsltCleanupGlobals);
|
|
|
|
MAKE_FUNCPTR(xsltFreeStylesheet);
|
|
|
|
MAKE_FUNCPTR(xsltParseStylesheetDoc);
|
|
|
|
# undef MAKE_FUNCPTR
|
|
|
|
#endif
|
|
|
|
|
2007-12-30 10:49:17 +00:00
|
|
|
extern IXMLDOMParseError *create_parseError( LONG code, BSTR url, BSTR reason, BSTR srcText,
|
|
|
|
LONG line, LONG linepos, LONG filepos );
|
|
|
|
extern HRESULT DOMDocument_create( IUnknown *pUnkOuter, LPVOID *ppObj );
|
|
|
|
extern HRESULT SchemaCache_create( IUnknown *pUnkOuter, LPVOID *ppObj );
|
|
|
|
extern HRESULT XMLDocument_create( IUnknown *pUnkOuter, LPVOID *ppObj );
|
2008-09-08 16:51:03 +00:00
|
|
|
extern HRESULT SAXXMLReader_create(IUnknown *pUnkOuter, LPVOID *ppObj );
|
2009-01-04 10:48:19 +00:00
|
|
|
extern HRESULT XMLHTTPRequest_create(IUnknown *pUnkOuter, LPVOID *ppObj);
|
2008-09-08 16:51:03 +00:00
|
|
|
|
|
|
|
typedef struct bsc_t bsc_t;
|
|
|
|
|
|
|
|
HRESULT bind_url(LPCWSTR, HRESULT (*onDataAvailable)(void*,char*,DWORD), void*, bsc_t**);
|
|
|
|
void detach_bsc(bsc_t*);
|
|
|
|
|
|
|
|
/* memory allocation functions */
|
|
|
|
|
|
|
|
static inline void *heap_alloc(size_t len)
|
|
|
|
{
|
|
|
|
return HeapAlloc(GetProcessHeap(), 0, len);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void *heap_alloc_zero(size_t len)
|
|
|
|
{
|
|
|
|
return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void *heap_realloc(void *mem, size_t len)
|
|
|
|
{
|
|
|
|
return HeapReAlloc(GetProcessHeap(), 0, mem, len);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline BOOL heap_free(void *mem)
|
|
|
|
{
|
|
|
|
return HeapFree(GetProcessHeap(), 0, mem);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline LPWSTR heap_strdupW(LPCWSTR str)
|
|
|
|
{
|
|
|
|
LPWSTR ret = NULL;
|
|
|
|
|
|
|
|
if(str) {
|
|
|
|
DWORD size;
|
|
|
|
|
|
|
|
size = (strlenW(str)+1)*sizeof(WCHAR);
|
|
|
|
ret = heap_alloc(size);
|
|
|
|
memcpy(ret, str, size);
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
}
|
2007-12-30 10:49:17 +00:00
|
|
|
|
|
|
|
#endif /* __MSXML_PRIVATE__ */
|