ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

msxml_private.h
Go to the documentation of this file.
00001 /*
00002  *    Common definitions
00003  *
00004  * Copyright 2005 Mike McCormack
00005  *
00006  * This library is free software; you can redistribute it and/or
00007  * modify it under the terms of the GNU Lesser General Public
00008  * License as published by the Free Software Foundation; either
00009  * version 2.1 of the License, or (at your option) any later version.
00010  *
00011  * This library is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014  * Lesser General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU Lesser General Public
00017  * License along with this library; if not, write to the Free Software
00018  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00019  */
00020 
00021 #ifndef __MSXML_PRIVATE__
00022 #define __MSXML_PRIVATE__
00023 
00024 #include "dispex.h"
00025 
00026 #include "wine/unicode.h"
00027 
00028 #ifndef __WINE_CONFIG_H
00029 # error You must include config.h to use this header
00030 #endif
00031 
00032 /* typelibs */
00033 typedef enum tid_t {
00034     IXMLDOMAttribute_tid,
00035     IXMLDOMCDATASection_tid,
00036     IXMLDOMComment_tid,
00037     IXMLDOMDocument_tid,
00038     IXMLDOMDocument2_tid,
00039     IXMLDOMDocumentFragment_tid,
00040     IXMLDOMElement_tid,
00041     IXMLDOMEntityReference_tid,
00042     IXMLDOMImplementation_tid,
00043     IXMLDOMNamedNodeMap_tid,
00044     IXMLDOMNode_tid,
00045     IXMLDOMNodeList_tid,
00046     IXMLDOMParseError_tid,
00047     IXMLDOMProcessingInstruction_tid,
00048     IXMLDOMSchemaCollection_tid,
00049     IXMLDOMSelection_tid,
00050     IXMLDOMText_tid,
00051     IXMLElement_tid,
00052     IXMLDocument_tid,
00053     IXMLHTTPRequest_tid,
00054     IVBSAXAttributes_tid,
00055     IVBSAXContentHandler_tid,
00056     IVBSAXDeclHandler_tid,
00057     IVBSAXDTDHandler_tid,
00058     IVBSAXEntityResolver_tid,
00059     IVBSAXErrorHandler_tid,
00060     IVBSAXLexicalHandler_tid,
00061     IVBSAXLocator_tid,
00062     IVBSAXXMLFilter_tid,
00063     IVBSAXXMLReader_tid,
00064     IMXAttributes_tid,
00065     IMXReaderControl_tid,
00066     IMXWriter_tid,
00067     LAST_tid
00068 } tid_t;
00069 
00070 extern HRESULT get_typeinfo(tid_t tid, ITypeInfo **typeinfo);
00071 extern void release_typelib(void);
00072 
00073 typedef struct dispex_data_t dispex_data_t;
00074 typedef struct dispex_dynamic_data_t dispex_dynamic_data_t;
00075 
00076 #define MSXML_DISPID_CUSTOM_MIN 0x60000000
00077 #define MSXML_DISPID_CUSTOM_MAX 0x6fffffff
00078 
00079 typedef struct {
00080     HRESULT (*get_dispid)(IUnknown*,BSTR,DWORD,DISPID*);
00081     HRESULT (*invoke)(IUnknown*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*);
00082 } dispex_static_data_vtbl_t;
00083 
00084 typedef struct {
00085     const dispex_static_data_vtbl_t *vtbl;
00086     const tid_t disp_tid;
00087     dispex_data_t *data;
00088     const tid_t* const iface_tids;
00089 } dispex_static_data_t;
00090 
00091 typedef struct {
00092     const IDispatchExVtbl  *lpIDispatchExVtbl;
00093 
00094     IUnknown *outer;
00095 
00096     dispex_static_data_t *data;
00097     dispex_dynamic_data_t *dynamic_data;
00098 } DispatchEx;
00099 
00100 void init_dispex(DispatchEx*,IUnknown*,dispex_static_data_t*);
00101 BOOL dispex_query_interface(DispatchEx*,REFIID,void**);
00102 
00103 #ifdef HAVE_LIBXML2
00104 
00105 #ifdef HAVE_LIBXML_PARSER_H
00106 #include <libxml/parser.h>
00107 #endif
00108 
00109 /* constructors */
00110 extern IUnknown         *create_domdoc( xmlNodePtr document );
00111 extern IUnknown         *create_xmldoc( void );
00112 extern IXMLDOMNode      *create_node( xmlNodePtr node );
00113 extern IUnknown         *create_element( xmlNodePtr element );
00114 extern IUnknown         *create_attribute( xmlNodePtr attribute );
00115 extern IUnknown         *create_text( xmlNodePtr text );
00116 extern IUnknown         *create_pi( xmlNodePtr pi );
00117 extern IUnknown         *create_comment( xmlNodePtr comment );
00118 extern IUnknown         *create_cdata( xmlNodePtr text );
00119 extern IXMLDOMNodeList  *create_children_nodelist( xmlNodePtr );
00120 extern IXMLDOMNamedNodeMap *create_nodemap( IXMLDOMNode *node );
00121 extern IUnknown         *create_doc_Implementation(void);
00122 extern IUnknown         *create_doc_fragment( xmlNodePtr fragment );
00123 extern IUnknown         *create_doc_entity_ref( xmlNodePtr entity );
00124 
00125 extern HRESULT queryresult_create( xmlNodePtr, LPWSTR, IXMLDOMNodeList ** );
00126 
00127 /* data accessors */
00128 xmlNodePtr xmlNodePtr_from_domnode( IXMLDOMNode *iface, xmlElementType type );
00129 
00130 /* helpers */
00131 extern xmlChar *xmlChar_from_wchar( LPWSTR str );
00132 
00133 extern LONG xmldoc_add_ref( xmlDocPtr doc );
00134 extern LONG xmldoc_release( xmlDocPtr doc );
00135 extern HRESULT xmldoc_add_orphan( xmlDocPtr doc, xmlNodePtr node );
00136 extern HRESULT xmldoc_remove_orphan( xmlDocPtr doc, xmlNodePtr node );
00137 extern void xmldoc_link_xmldecl(xmlDocPtr doc, xmlNodePtr node);
00138 extern xmlNodePtr xmldoc_unlink_xmldecl(xmlDocPtr doc);
00139 
00140 extern HRESULT XMLElement_create( IUnknown *pUnkOuter, xmlNodePtr node, LPVOID *ppObj, BOOL own );
00141 
00142 extern xmlDocPtr parse_xml(char *ptr, int len);
00143 
00144 /* IXMLDOMNode Internal Structure */
00145 typedef struct _xmlnode
00146 {
00147     DispatchEx dispex;
00148     const struct IXMLDOMNodeVtbl *lpVtbl;
00149     IUnknown *pUnkOuter;
00150     LONG ref;
00151     xmlNodePtr node;
00152 } xmlnode;
00153 
00154 static inline xmlnode *impl_from_IXMLDOMNode( IXMLDOMNode *iface )
00155 {
00156     return (xmlnode *)((char*)iface - FIELD_OFFSET(xmlnode, lpVtbl));
00157 }
00158 
00159 static inline IXMLDOMNode *IXMLDOMNode_from_impl(xmlnode *This)
00160 {
00161     return (IXMLDOMNode*)&This->lpVtbl;
00162 }
00163 
00164 extern void init_xmlnode(xmlnode*,xmlNodePtr,IUnknown*,dispex_static_data_t*);
00165 extern void destroy_xmlnode(xmlnode*);
00166 
00167 extern HRESULT DOMDocument_create_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument2 **document);
00168 
00169 static inline BSTR bstr_from_xmlChar(const xmlChar *str)
00170 {
00171     BSTR ret = NULL;
00172 
00173     if(str) {
00174         DWORD len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)str, -1, NULL, 0);
00175         ret = SysAllocStringLen(NULL, len-1);
00176         if(ret)
00177             MultiByteToWideChar( CP_UTF8, 0, (LPCSTR)str, -1, ret, len);
00178     }
00179     else
00180         ret = SysAllocStringLen(NULL, 0);
00181 
00182     return ret;
00183 }
00184 
00185 #endif
00186 
00187 void* libxslt_handle;
00188 #ifdef SONAME_LIBXSLT
00189 # ifdef HAVE_LIBXSLT_PATTERN_H
00190 #  include <libxslt/pattern.h>
00191 # endif
00192 # ifdef HAVE_LIBXSLT_TRANSFORM_H
00193 #  include <libxslt/transform.h>
00194 # endif
00195 # include <libxslt/xsltutils.h>
00196 # include <libxslt/xsltInternals.h>
00197 
00198 # define MAKE_FUNCPTR(f) extern typeof(f) * p##f
00199 MAKE_FUNCPTR(xsltApplyStylesheet);
00200 MAKE_FUNCPTR(xsltCleanupGlobals);
00201 MAKE_FUNCPTR(xsltFreeStylesheet);
00202 MAKE_FUNCPTR(xsltParseStylesheetDoc);
00203 # undef MAKE_FUNCPTR
00204 #endif
00205 
00206 extern IXMLDOMParseError *create_parseError( LONG code, BSTR url, BSTR reason, BSTR srcText,
00207                                              LONG line, LONG linepos, LONG filepos );
00208 extern HRESULT DOMDocument_create( IUnknown *pUnkOuter, LPVOID *ppObj );
00209 extern HRESULT SchemaCache_create( IUnknown *pUnkOuter, LPVOID *ppObj );
00210 extern HRESULT XMLDocument_create( IUnknown *pUnkOuter, LPVOID *ppObj );
00211 extern HRESULT SAXXMLReader_create(IUnknown *pUnkOuter, LPVOID *ppObj );
00212 extern HRESULT XMLHTTPRequest_create(IUnknown *pUnkOuter, LPVOID *ppObj);
00213 
00214 typedef struct bsc_t bsc_t;
00215 
00216 HRESULT bind_url(LPCWSTR, HRESULT (*onDataAvailable)(void*,char*,DWORD), void*, bsc_t**);
00217 void detach_bsc(bsc_t*);
00218 
00219 /* memory allocation functions */
00220 
00221 static inline void *heap_alloc(size_t len)
00222 {
00223     return HeapAlloc(GetProcessHeap(), 0, len);
00224 }
00225 
00226 static inline void *heap_alloc_zero(size_t len)
00227 {
00228     return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
00229 }
00230 
00231 static inline void *heap_realloc(void *mem, size_t len)
00232 {
00233     return HeapReAlloc(GetProcessHeap(), 0, mem, len);
00234 }
00235 
00236 static inline BOOL heap_free(void *mem)
00237 {
00238     return HeapFree(GetProcessHeap(), 0, mem);
00239 }
00240 
00241 static inline LPWSTR heap_strdupW(LPCWSTR str)
00242 {
00243     LPWSTR ret = NULL;
00244 
00245     if(str) {
00246         DWORD size;
00247 
00248         size = (strlenW(str)+1)*sizeof(WCHAR);
00249         ret = heap_alloc(size);
00250         memcpy(ret, str, size);
00251     }
00252 
00253     return ret;
00254 }
00255 
00256 #endif /* __MSXML_PRIVATE__ */

Generated on Sun May 27 2012 04:25:24 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.