2 * SAX Reader implementation
4 * Copyright 2008 Alistair Leslie-Hughes
5 * Copyright 2008 Piotr Caban
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
38 #include "wine/debug.h"
40 #include "msxml_private.h"
42 WINE_DEFAULT_DEBUG_CHANNEL(msxml
);
46 #include <libxml/SAX2.h>
48 typedef struct _saxreader
50 const struct IVBSAXXMLReaderVtbl
*lpVtbl
;
51 const struct ISAXXMLReaderVtbl
*lpSAXXMLReaderVtbl
;
53 struct ISAXContentHandler
*contentHandler
;
54 struct ISAXErrorHandler
*errorHandler
;
58 typedef struct _saxlocator
60 const struct ISAXLocatorVtbl
*lpSAXLocatorVtbl
;
65 static inline saxreader
*impl_from_IVBSAXXMLReader( IVBSAXXMLReader
*iface
)
67 return (saxreader
*)((char*)iface
- FIELD_OFFSET(saxreader
, lpVtbl
));
70 static inline saxreader
*impl_from_ISAXXMLReader( ISAXXMLReader
*iface
)
72 return (saxreader
*)((char*)iface
- FIELD_OFFSET(saxreader
, lpSAXXMLReaderVtbl
));
75 static inline saxlocator
*impl_from_ISAXLocator( ISAXLocator
*iface
)
77 return (saxlocator
*)((char*)iface
- FIELD_OFFSET(saxlocator
, lpSAXLocatorVtbl
));
80 /*** ISAXLocator interface ***/
81 /*** IUnknown methods ***/
82 static HRESULT WINAPI
isaxlocator_QueryInterface(ISAXLocator
* iface
, REFIID riid
, void **ppvObject
)
84 saxlocator
*This
= impl_from_ISAXLocator( iface
);
86 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
90 if ( IsEqualGUID( riid
, &IID_IUnknown
) ||
91 IsEqualGUID( riid
, &IID_ISAXLocator
))
97 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
101 ISAXLocator_AddRef( iface
);
106 static ULONG WINAPI
isaxlocator_AddRef(ISAXLocator
* iface
)
108 saxlocator
*This
= impl_from_ISAXLocator( iface
);
109 TRACE("%p\n", This
);
110 return InterlockedIncrement( &This
->ref
);
113 static ULONG WINAPI
isaxlocator_Release(
116 saxlocator
*This
= impl_from_ISAXLocator( iface
);
119 TRACE("%p\n", This
);
121 ref
= InterlockedDecrement( &This
->ref
);
124 ISAXXMLReader_Release((ISAXXMLReader
*)&This
->saxreader
->lpSAXXMLReaderVtbl
);
125 HeapFree( GetProcessHeap(), 0, This
);
131 /*** ISAXLocator methods ***/
132 static HRESULT WINAPI
isaxlocator_getColumnNumber(
136 saxlocator
*This
= impl_from_ISAXLocator( iface
);
138 FIXME("(%p)->(%p) stub\n", This
, pnColumn
);
142 static HRESULT WINAPI
isaxlocator_getLineNumber(
146 saxlocator
*This
= impl_from_ISAXLocator( iface
);
148 FIXME("(%p)->(%p) stub\n", This
, pnLine
);
152 static HRESULT WINAPI
isaxlocator_getPublicId(
154 const WCHAR
** ppwchPublicId
)
156 saxlocator
*This
= impl_from_ISAXLocator( iface
);
158 FIXME("(%p)->(%p) stub\n", This
, ppwchPublicId
);
162 static HRESULT WINAPI
isaxlocator_getSystemId(
164 const WCHAR
** ppwchSystemId
)
166 saxlocator
*This
= impl_from_ISAXLocator( iface
);
168 FIXME("(%p)->(%p) stub\n", This
, ppwchSystemId
);
172 static const struct ISAXLocatorVtbl isaxlocator_vtbl
=
174 isaxlocator_QueryInterface
,
177 isaxlocator_getColumnNumber
,
178 isaxlocator_getLineNumber
,
179 isaxlocator_getPublicId
,
180 isaxlocator_getSystemId
183 static HRESULT
SAXLocator_create(saxreader
*reader
, saxlocator
**ppsaxlocator
)
187 locator
= HeapAlloc( GetProcessHeap(), 0, sizeof (*locator
) );
189 return E_OUTOFMEMORY
;
191 locator
->lpSAXLocatorVtbl
= &isaxlocator_vtbl
;
194 locator
->saxreader
= reader
;
195 ISAXXMLReader_AddRef((ISAXXMLReader
*)&reader
->lpSAXXMLReaderVtbl
);
197 *ppsaxlocator
= locator
;
199 TRACE("returning %p\n", *ppsaxlocator
);
204 /*** IVBSAXXMLReader interface ***/
205 /*** IUnknown methods ***/
206 static HRESULT WINAPI
saxxmlreader_QueryInterface(IVBSAXXMLReader
* iface
, REFIID riid
, void **ppvObject
)
208 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
210 TRACE("%p %s %p\n", This
, debugstr_guid( riid
), ppvObject
);
214 if ( IsEqualGUID( riid
, &IID_IUnknown
) ||
215 IsEqualGUID( riid
, &IID_IDispatch
) ||
216 IsEqualGUID( riid
, &IID_IVBSAXXMLReader
))
220 else if( IsEqualGUID( riid
, &IID_ISAXXMLReader
))
222 *ppvObject
= (ISAXXMLReader
*)&This
->lpSAXXMLReaderVtbl
;
226 FIXME("interface %s not implemented\n", debugstr_guid(riid
));
227 return E_NOINTERFACE
;
230 IVBSAXXMLReader_AddRef( iface
);
235 static ULONG WINAPI
saxxmlreader_AddRef(IVBSAXXMLReader
* iface
)
237 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
238 TRACE("%p\n", This
);
239 return InterlockedIncrement( &This
->ref
);
242 static ULONG WINAPI
saxxmlreader_Release(
243 IVBSAXXMLReader
* iface
)
245 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
248 TRACE("%p\n", This
);
250 ref
= InterlockedDecrement( &This
->ref
);
253 if(This
->contentHandler
)
254 ISAXContentHandler_Release(This
->contentHandler
);
256 if(This
->errorHandler
)
257 ISAXErrorHandler_Release(This
->errorHandler
);
259 HeapFree( GetProcessHeap(), 0, This
);
265 static HRESULT WINAPI
saxxmlreader_GetTypeInfoCount( IVBSAXXMLReader
*iface
, UINT
* pctinfo
)
267 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
269 TRACE("(%p)->(%p)\n", This
, pctinfo
);
276 static HRESULT WINAPI
saxxmlreader_GetTypeInfo(
277 IVBSAXXMLReader
*iface
,
278 UINT iTInfo
, LCID lcid
, ITypeInfo
** ppTInfo
)
280 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
283 TRACE("(%p)->(%u %u %p)\n", This
, iTInfo
, lcid
, ppTInfo
);
285 hr
= get_typeinfo(IVBSAXXMLReader_tid
, ppTInfo
);
290 static HRESULT WINAPI
saxxmlreader_GetIDsOfNames(
291 IVBSAXXMLReader
*iface
,
298 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
302 TRACE("(%p)->(%s %p %u %u %p)\n", This
, debugstr_guid(riid
), rgszNames
, cNames
,
305 if(!rgszNames
|| cNames
== 0 || !rgDispId
)
308 hr
= get_typeinfo(IVBSAXXMLReader_tid
, &typeinfo
);
311 hr
= ITypeInfo_GetIDsOfNames(typeinfo
, rgszNames
, cNames
, rgDispId
);
312 ITypeInfo_Release(typeinfo
);
318 static HRESULT WINAPI
saxxmlreader_Invoke(
319 IVBSAXXMLReader
*iface
,
324 DISPPARAMS
* pDispParams
,
326 EXCEPINFO
* pExcepInfo
,
329 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
333 TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This
, dispIdMember
, debugstr_guid(riid
),
334 lcid
, wFlags
, pDispParams
, pVarResult
, pExcepInfo
, puArgErr
);
336 hr
= get_typeinfo(IVBSAXXMLReader_tid
, &typeinfo
);
339 hr
= ITypeInfo_Invoke(typeinfo
, &(This
->lpVtbl
), dispIdMember
, wFlags
, pDispParams
,
340 pVarResult
, pExcepInfo
, puArgErr
);
341 ITypeInfo_Release(typeinfo
);
347 /*** IVBSAXXMLReader methods ***/
348 static HRESULT WINAPI
saxxmlreader_getFeature(
349 IVBSAXXMLReader
* iface
,
350 const WCHAR
*pFeature
,
351 VARIANT_BOOL
*pValue
)
353 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
355 FIXME("(%p)->(%s %p) stub\n", This
, debugstr_w(pFeature
), pValue
);
359 static HRESULT WINAPI
saxxmlreader_putFeature(
360 IVBSAXXMLReader
* iface
,
361 const WCHAR
*pFeature
,
362 VARIANT_BOOL vfValue
)
364 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
366 FIXME("(%p)->(%s %x) stub\n", This
, debugstr_w(pFeature
), vfValue
);
370 static HRESULT WINAPI
saxxmlreader_getProperty(
371 IVBSAXXMLReader
* iface
,
375 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
377 FIXME("(%p)->(%s %p) stub\n", This
, debugstr_w(pProp
), pValue
);
381 static HRESULT WINAPI
saxxmlreader_putProperty(
382 IVBSAXXMLReader
* iface
,
386 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
388 FIXME("(%p)->(%s) stub\n", This
, debugstr_w(pProp
));
392 static HRESULT WINAPI
saxxmlreader_getEntityResolver(
393 IVBSAXXMLReader
* iface
,
394 IVBSAXEntityResolver
**pEntityResolver
)
396 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
398 FIXME("(%p)->(%p) stub\n", This
, pEntityResolver
);
402 static HRESULT WINAPI
saxxmlreader_putEntityResolver(
403 IVBSAXXMLReader
* iface
,
404 IVBSAXEntityResolver
*pEntityResolver
)
406 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
408 FIXME("(%p)->(%p) stub\n", This
, pEntityResolver
);
412 static HRESULT WINAPI
saxxmlreader_getContentHandler(
413 IVBSAXXMLReader
* iface
,
414 IVBSAXContentHandler
**ppContentHandler
)
416 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
418 FIXME("(%p)->(%p) stub\n", This
, ppContentHandler
);
422 static HRESULT WINAPI
saxxmlreader_putContentHandler(
423 IVBSAXXMLReader
* iface
,
424 IVBSAXContentHandler
*contentHandler
)
426 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
428 FIXME("(%p)->(%p) stub\n", This
, contentHandler
);
432 static HRESULT WINAPI
saxxmlreader_getDTDHandler(
433 IVBSAXXMLReader
* iface
,
434 IVBSAXDTDHandler
**pDTDHandler
)
436 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
438 FIXME("(%p)->(%p) stub\n", This
, pDTDHandler
);
442 static HRESULT WINAPI
saxxmlreader_putDTDHandler(
443 IVBSAXXMLReader
* iface
,
444 IVBSAXDTDHandler
*pDTDHandler
)
446 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
448 FIXME("(%p)->(%p) stub\n", This
, pDTDHandler
);
452 static HRESULT WINAPI
saxxmlreader_getErrorHandler(
453 IVBSAXXMLReader
* iface
,
454 IVBSAXErrorHandler
**pErrorHandler
)
456 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
458 FIXME("(%p)->(%p) stub\n", This
, pErrorHandler
);
462 static HRESULT WINAPI
saxxmlreader_putErrorHandler(
463 IVBSAXXMLReader
* iface
,
464 IVBSAXErrorHandler
*errorHandler
)
466 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
468 FIXME("(%p)->(%p) stub\n", This
, errorHandler
);
472 static HRESULT WINAPI
saxxmlreader_getBaseURL(
473 IVBSAXXMLReader
* iface
,
474 const WCHAR
**pBaseUrl
)
476 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
478 FIXME("(%p)->(%p) stub\n", This
, pBaseUrl
);
482 static HRESULT WINAPI
saxxmlreader_putBaseURL(
483 IVBSAXXMLReader
* iface
,
484 const WCHAR
*pBaseUrl
)
486 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
488 FIXME("(%p)->(%s) stub\n", This
, debugstr_w(pBaseUrl
));
492 static HRESULT WINAPI
saxxmlreader_getSecureBaseURL(
493 IVBSAXXMLReader
* iface
,
494 const WCHAR
**pSecureBaseUrl
)
496 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
498 FIXME("(%p)->(%p) stub\n", This
, pSecureBaseUrl
);
503 static HRESULT WINAPI
saxxmlreader_putSecureBaseURL(
504 IVBSAXXMLReader
* iface
,
505 const WCHAR
*secureBaseUrl
)
507 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
509 FIXME("(%p)->(%s) stub\n", This
, debugstr_w(secureBaseUrl
));
513 static HRESULT WINAPI
saxxmlreader_parse(
514 IVBSAXXMLReader
* iface
,
517 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
519 FIXME("(%p) stub\n", This
);
523 static HRESULT WINAPI
saxxmlreader_parseURL(
524 IVBSAXXMLReader
* iface
,
527 saxreader
*This
= impl_from_IVBSAXXMLReader( iface
);
529 FIXME("(%p)->(%s) stub\n", This
, debugstr_w(url
));
533 static const struct IVBSAXXMLReaderVtbl saxreader_vtbl
=
535 saxxmlreader_QueryInterface
,
537 saxxmlreader_Release
,
538 saxxmlreader_GetTypeInfoCount
,
539 saxxmlreader_GetTypeInfo
,
540 saxxmlreader_GetIDsOfNames
,
542 saxxmlreader_getFeature
,
543 saxxmlreader_putFeature
,
544 saxxmlreader_getProperty
,
545 saxxmlreader_putProperty
,
546 saxxmlreader_getEntityResolver
,
547 saxxmlreader_putEntityResolver
,
548 saxxmlreader_getContentHandler
,
549 saxxmlreader_putContentHandler
,
550 saxxmlreader_getDTDHandler
,
551 saxxmlreader_putDTDHandler
,
552 saxxmlreader_getErrorHandler
,
553 saxxmlreader_putErrorHandler
,
554 saxxmlreader_getBaseURL
,
555 saxxmlreader_putBaseURL
,
556 saxxmlreader_getSecureBaseURL
,
557 saxxmlreader_putSecureBaseURL
,
559 saxxmlreader_parseURL
562 /*** ISAXXMLReader interface ***/
563 /*** IUnknown methods ***/
564 static HRESULT WINAPI
isaxxmlreader_QueryInterface(ISAXXMLReader
* iface
, REFIID riid
, void **ppvObject
)
566 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
567 return saxxmlreader_QueryInterface((IVBSAXXMLReader
*)&This
->lpVtbl
, riid
, ppvObject
);
570 static ULONG WINAPI
isaxxmlreader_AddRef(ISAXXMLReader
* iface
)
572 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
573 return saxxmlreader_AddRef((IVBSAXXMLReader
*)&This
->lpVtbl
);
576 static ULONG WINAPI
isaxxmlreader_Release(ISAXXMLReader
* iface
)
578 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
579 return saxxmlreader_Release((IVBSAXXMLReader
*)&This
->lpVtbl
);
582 /*** ISAXXMLReader methods ***/
583 static HRESULT WINAPI
isaxxmlreader_getFeature(
584 ISAXXMLReader
* iface
,
585 const WCHAR
*pFeature
,
586 VARIANT_BOOL
*pValue
)
588 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
590 FIXME("(%p)->(%s %p) stub\n", This
, debugstr_w(pFeature
), pValue
);
594 static HRESULT WINAPI
isaxxmlreader_putFeature(
595 ISAXXMLReader
* iface
,
596 const WCHAR
*pFeature
,
597 VARIANT_BOOL vfValue
)
599 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
601 FIXME("(%p)->(%s %x) stub\n", This
, debugstr_w(pFeature
), vfValue
);
605 static HRESULT WINAPI
isaxxmlreader_getProperty(
606 ISAXXMLReader
* iface
,
610 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
612 FIXME("(%p)->(%s %p) stub\n", This
, debugstr_w(pProp
), pValue
);
616 static HRESULT WINAPI
isaxxmlreader_putProperty(
617 ISAXXMLReader
* iface
,
621 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
623 FIXME("(%p)->(%s) stub\n", This
, debugstr_w(pProp
));
627 static HRESULT WINAPI
isaxxmlreader_getEntityResolver(
628 ISAXXMLReader
* iface
,
629 ISAXEntityResolver
**ppEntityResolver
)
631 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
633 FIXME("(%p)->(%p) stub\n", This
, ppEntityResolver
);
637 static HRESULT WINAPI
isaxxmlreader_putEntityResolver(
638 ISAXXMLReader
* iface
,
639 ISAXEntityResolver
*pEntityResolver
)
641 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
643 FIXME("(%p)->(%p) stub\n", This
, pEntityResolver
);
647 static HRESULT WINAPI
isaxxmlreader_getContentHandler(
648 ISAXXMLReader
* iface
,
649 ISAXContentHandler
**pContentHandler
)
651 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
653 TRACE("(%p)->(%p)\n", This
, pContentHandler
);
654 if(pContentHandler
== NULL
)
656 if(This
->contentHandler
)
657 ISAXContentHandler_AddRef(This
->contentHandler
);
658 *pContentHandler
= This
->contentHandler
;
663 static HRESULT WINAPI
isaxxmlreader_putContentHandler(
664 ISAXXMLReader
* iface
,
665 ISAXContentHandler
*contentHandler
)
667 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
669 TRACE("(%p)->(%p)\n", This
, contentHandler
);
671 ISAXContentHandler_AddRef(contentHandler
);
672 if(This
->contentHandler
)
673 ISAXContentHandler_Release(This
->contentHandler
);
674 This
->contentHandler
= contentHandler
;
679 static HRESULT WINAPI
isaxxmlreader_getDTDHandler(
680 ISAXXMLReader
* iface
,
681 ISAXDTDHandler
**pDTDHandler
)
683 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
685 FIXME("(%p)->(%p) stub\n", This
, pDTDHandler
);
689 static HRESULT WINAPI
isaxxmlreader_putDTDHandler(
690 ISAXXMLReader
* iface
,
691 ISAXDTDHandler
*pDTDHandler
)
693 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
695 FIXME("(%p)->(%p) stub\n", This
, pDTDHandler
);
699 static HRESULT WINAPI
isaxxmlreader_getErrorHandler(
700 ISAXXMLReader
* iface
,
701 ISAXErrorHandler
**pErrorHandler
)
703 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
705 TRACE("(%p)->(%p)\n", This
, pErrorHandler
);
706 if(pErrorHandler
== NULL
)
708 if(This
->errorHandler
)
709 ISAXErrorHandler_AddRef(This
->errorHandler
);
710 *pErrorHandler
= This
->errorHandler
;
715 static HRESULT WINAPI
isaxxmlreader_putErrorHandler(
716 ISAXXMLReader
* iface
,
717 ISAXErrorHandler
*errorHandler
)
719 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
721 TRACE("(%p)->(%p)\n", This
, errorHandler
);
723 ISAXErrorHandler_AddRef(errorHandler
);
724 if(This
->errorHandler
)
725 ISAXErrorHandler_Release(This
->errorHandler
);
726 This
->errorHandler
= errorHandler
;
731 static HRESULT WINAPI
isaxxmlreader_getBaseURL(
732 ISAXXMLReader
* iface
,
733 const WCHAR
**pBaseUrl
)
735 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
737 FIXME("(%p)->(%p) stub\n", This
, pBaseUrl
);
741 static HRESULT WINAPI
isaxxmlreader_putBaseURL(
742 ISAXXMLReader
* iface
,
743 const WCHAR
*pBaseUrl
)
745 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
747 FIXME("(%p)->(%s) stub\n", This
, debugstr_w(pBaseUrl
));
751 static HRESULT WINAPI
isaxxmlreader_getSecureBaseURL(
752 ISAXXMLReader
* iface
,
753 const WCHAR
**pSecureBaseUrl
)
755 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
757 FIXME("(%p)->(%p) stub\n", This
, pSecureBaseUrl
);
761 static HRESULT WINAPI
isaxxmlreader_putSecureBaseURL(
762 ISAXXMLReader
* iface
,
763 const WCHAR
*secureBaseUrl
)
765 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
767 FIXME("(%p)->(%s) stub\n", This
, debugstr_w(secureBaseUrl
));
771 static HRESULT WINAPI
isaxxmlreader_parse(
772 ISAXXMLReader
* iface
,
775 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
777 FIXME("(%p) stub\n", This
);
781 static HRESULT WINAPI
isaxxmlreader_parseURL(
782 ISAXXMLReader
* iface
,
785 saxreader
*This
= impl_from_ISAXXMLReader( iface
);
787 FIXME("(%p)->(%s) stub\n", This
, debugstr_w(url
));
791 static const struct ISAXXMLReaderVtbl isaxreader_vtbl
=
793 isaxxmlreader_QueryInterface
,
794 isaxxmlreader_AddRef
,
795 isaxxmlreader_Release
,
796 isaxxmlreader_getFeature
,
797 isaxxmlreader_putFeature
,
798 isaxxmlreader_getProperty
,
799 isaxxmlreader_putProperty
,
800 isaxxmlreader_getEntityResolver
,
801 isaxxmlreader_putEntityResolver
,
802 isaxxmlreader_getContentHandler
,
803 isaxxmlreader_putContentHandler
,
804 isaxxmlreader_getDTDHandler
,
805 isaxxmlreader_putDTDHandler
,
806 isaxxmlreader_getErrorHandler
,
807 isaxxmlreader_putErrorHandler
,
808 isaxxmlreader_getBaseURL
,
809 isaxxmlreader_putBaseURL
,
810 isaxxmlreader_getSecureBaseURL
,
811 isaxxmlreader_putSecureBaseURL
,
813 isaxxmlreader_parseURL
816 HRESULT
SAXXMLReader_create(IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
820 TRACE("(%p,%p)\n", pUnkOuter
, ppObj
);
822 reader
= HeapAlloc( GetProcessHeap(), 0, sizeof (*reader
) );
824 return E_OUTOFMEMORY
;
826 reader
->lpVtbl
= &saxreader_vtbl
;
827 reader
->lpSAXXMLReaderVtbl
= &isaxreader_vtbl
;
829 reader
->contentHandler
= NULL
;
830 reader
->errorHandler
= NULL
;
832 *ppObj
= &reader
->lpVtbl
;
834 TRACE("returning iface %p\n", *ppObj
);
841 HRESULT
SAXXMLReader_create(IUnknown
*pUnkOuter
, LPVOID
*ppObj
)
843 MESSAGE("This program tried to use a SAX XML Reader object, but\n"
844 "libxml2 support was not present at compile time.\n");