You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by tn...@apache.org on 2001/01/19 16:19:32 UTC

cvs commit: xml-xerces/c/src/com xml4com.h xml4com_i.c IXMLDOMNodeImpl.h IXMLDOMNodeImpl.inl README.txt XMLDOMAttribute.cpp XMLDOMAttribute.h XMLDOMCDATASection.h XMLDOMComment.h XMLDOMDocument.cpp XMLDOMDocument.h XMLDOMDocumentFragment.h XMLDOMDocumentType.cpp XMLDOMDocumentType.h XMLDOMElement.cpp XMLDOMElement.h XMLDOMEntity.cpp XMLDOMEntityReference.h XMLDOMNamedNodeMap.cpp XMLDOMNamedNodeMap.h XMLDOMNodeList.cpp XMLDOMNodeList.h XMLDOMNotation.cpp XMLDOMNotation.h XMLDOMProcessingInstruction.cpp XMLDOMProcessingInstruction.h XMLDOMText.h XMLDOMUtil.cpp XMLDOMXMLDecl.cpp xml4com.cpp xml4com.idl xml4com.rc xmldocument.rgs xmlhttprequest.rgs

tng         01/01/19 07:19:28

  Modified:    c/src/com IXMLDOMNodeImpl.h IXMLDOMNodeImpl.inl README.txt
                        XMLDOMAttribute.cpp XMLDOMAttribute.h
                        XMLDOMCDATASection.h XMLDOMComment.h
                        XMLDOMDocument.cpp XMLDOMDocument.h
                        XMLDOMDocumentFragment.h XMLDOMDocumentType.cpp
                        XMLDOMDocumentType.h XMLDOMElement.cpp
                        XMLDOMElement.h XMLDOMEntity.cpp
                        XMLDOMEntityReference.h XMLDOMNamedNodeMap.cpp
                        XMLDOMNamedNodeMap.h XMLDOMNodeList.cpp
                        XMLDOMNodeList.h XMLDOMNotation.cpp
                        XMLDOMNotation.h XMLDOMProcessingInstruction.cpp
                        XMLDOMProcessingInstruction.h XMLDOMText.h
                        XMLDOMUtil.cpp XMLDOMXMLDecl.cpp xml4com.cpp
                        xml4com.idl xml4com.rc xmldocument.rgs
                        xmlhttprequest.rgs
  Added:       c/src/com xml4com.h xml4com_i.c
  Log:
  COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  both can coexist and fixed a new minor bugs.  Most of the changes involved
  error reporting, now a DOM defined error will return an HRESULT of
  0x80040600 + code and will set an error description to the error name.
  
  Revision  Changes    Path
  1.5       +13 -1     xml-xerces/c/src/com/IXMLDOMNodeImpl.h
  
  Index: IXMLDOMNodeImpl.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/IXMLDOMNodeImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- IXMLDOMNodeImpl.h	2000/06/19 20:05:56	1.4
  +++ IXMLDOMNodeImpl.h	2001/01/19 15:17:54	1.5
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: IXMLDOMNodeImpl.h,v $
  + * Revision 1.5  2001/01/19 15:17:54  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.4  2000/06/19 20:05:56  rahulj
    * Changes for increased conformance and stability. Submitted by
    * Curt.Arnold@hyprotech.com. Verified by Joe Polastre.
  @@ -91,7 +97,8 @@
   WORD wMinor = 0, class tihclass = CComTypeInfoHolder>
   class ATL_NO_VTABLE IXMLDOMNodeImpl: 
   	public IDispatchImpl<T,piid,plibid,wMajor,wMinor,tihclass>,
  -	public IIBMXMLDOMNodeIdentity
  +	public IIBMXMLDOMNodeIdentity,
  +	public ISupportErrorInfo
   {
   public:
   
  @@ -120,7 +127,11 @@
   		*pVal = reinterpret_cast<long> (&get_DOM_Node());
   		return S_OK;
   	}
  +
  +	//   ISupportErrorInfo
  +	HRESULT STDMETHODCALLTYPE InterfaceSupportsErrorInfo(REFIID iid);
   	
  +
   	// IXMLDOMNode 
       STDMETHOD(get_nodeName)(BSTR  *pVal);
   	STDMETHOD(get_nodeValue)(VARIANT  *pVal);
  @@ -172,6 +183,9 @@
   	}
   
   };
  +
  +class DOM_DOMException;
  +HRESULT MakeHRESULT(DOM_DOMException& ex);
   
   #include "IXMLDOMNodeImpl.inl"
   
  
  
  
  1.7       +107 -6    xml-xerces/c/src/com/IXMLDOMNodeImpl.inl
  
  Index: IXMLDOMNodeImpl.inl
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/IXMLDOMNodeImpl.inl,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- IXMLDOMNodeImpl.inl	2000/09/29 23:07:01	1.6
  +++ IXMLDOMNodeImpl.inl	2001/01/19 15:17:56	1.7
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: IXMLDOMNodeImpl.inl,v 1.6 2000/09/29 23:07:01 aruna1 Exp $
  + * $Id: IXMLDOMNodeImpl.inl,v 1.7 2001/01/19 15:17:56 tng Exp $
    */
   
   
  @@ -64,8 +64,16 @@
   #include "XMLDOMNodeList.h"
   #include "XMLDOMNamedNodeMap.h"
   #include "XMLDOMUtil.h"
  +#include <dom/DOM_DOMException.hpp>
   
   template <class T, const IID* piid, const GUID* plibid, WORD wMajor,WORD wMinor, class tihclass>
  +HRESULT STDMETHODCALLTYPE IXMLDOMNodeImpl<T,piid,plibid,wMajor,wMinor,tihclass>::InterfaceSupportsErrorInfo(REFIID riid)
  +{
  +	if(riid == *piid) return S_OK;
  +	return S_FALSE;
  +}
  +
  +template <class T, const IID* piid, const GUID* plibid, WORD wMajor,WORD wMinor, class tihclass>
   STDMETHODIMP
   IXMLDOMNodeImpl<T,piid,plibid,wMajor,wMinor,tihclass>::get_nodeName(BSTR *pVal)
   {
  @@ -81,6 +89,10 @@
   		DOMString val = get_DOM_Node().getNodeName();
   		*pVal = SysAllocStringLen(val.rawBuffer(),val.length());
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -113,6 +125,10 @@
   		else
   			V_VT(pVal) = VT_NULL;
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -127,12 +143,23 @@
   {
   	ATLTRACE(_T("IXMLDOMNodeImpl::put_nodeValue\n"));
   
  -	if (V_VT(&newVal) != VT_BSTR)
  -		return E_INVALIDARG;
  -
   	try
   	{
  -		get_DOM_Node().setNodeValue(V_BSTR(&newVal));
  +		if(V_VT(&newVal) == VT_BSTR)
  +		{
  +			get_DOM_Node().setNodeValue(V_BSTR(&newVal));
  +		}
  +		//
  +		//   coerce to BSTR or throw error
  +		//
  +		else 
  +		{
  +			get_DOM_Node().setNodeValue((BSTR) (_bstr_t) newVal);
  +		}
  +	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
   	}
   	catch(...)
   	{
  @@ -176,6 +203,10 @@
   			hr = wrapNode(m_pIXMLDOMDocument, n,IID_IXMLDOMNode,reinterpret_cast<LPVOID *> (pVal));
   		}
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -208,6 +239,11 @@
   	{
   		pObj->m_container = get_DOM_Node().getChildNodes();
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release(); 
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -244,6 +280,10 @@
   		if(!n.isNull())
   			hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -272,6 +312,10 @@
   		if(!n.isNull())
   			hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -299,6 +343,10 @@
   		if(!n.isNull())
   			hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -327,6 +375,10 @@
   		if(!n.isNull())
   			hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -351,6 +403,10 @@
   	{
   		map = get_DOM_Node().getAttributes();
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -430,6 +486,10 @@
   		DOM_Node n = get_DOM_Node().insertBefore(*pNewChildNode, *pRefChildNode);
   		hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (outNewChild));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -487,6 +547,10 @@
   		DOM_Node n = get_DOM_Node().replaceChild(*pNewChildNode, *pOldChildNode);
   		hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (outNewChild));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -528,6 +592,10 @@
   		if(!n.isNull())
   			hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (oldChild));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -568,6 +636,10 @@
   		DOM_Node n = get_DOM_Node().appendChild(*pNewChildNode);
   		hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (outNewChild));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -591,6 +663,10 @@
   	{
   		*hasChild = (get_DOM_Node().hasChildNodes()) ? VARIANT_TRUE : VARIANT_FALSE;
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -634,6 +710,10 @@
   	{
   		hr = wrapNode(m_pIXMLDOMDocument,get_DOM_Node().cloneNode((VARIANT_TRUE == deep) ? true : false),IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -709,6 +789,10 @@
   		else
   			get_DOM_Node().setNodeValue(newVal);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -789,6 +873,10 @@
   	try {
   		GetXML(get_DOM_Node(),text);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -854,6 +942,10 @@
   		DOMString val = get_DOM_Node().getNamespaceURI();
   		*pVal = SysAllocStringLen(val.rawBuffer(),val.length());
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -877,6 +969,10 @@
   		DOMString val = get_DOM_Node().getPrefix();
   		*pVal = SysAllocStringLen(val.rawBuffer(),val.length());
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -900,6 +996,10 @@
   		DOMString val = get_DOM_Node().getLocalName();
   		*pVal = SysAllocStringLen(val.rawBuffer(),val.length());
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -915,4 +1015,5 @@
   	ATLTRACE(_T("IXMLDOMNodeImpl::transformNodeToObject\n"));
   
   	return E_NOTIMPL;
  -}
  \ No newline at end of file
  +}
  +
  
  
  
  1.3       +1 -1      xml-xerces/c/src/com/README.txt
  
  Index: README.txt
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/README.txt,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- README.txt	2000/09/29 23:07:02	1.2
  +++ README.txt	2001/01/19 15:17:59	1.3
  @@ -27,7 +27,7 @@
   Dim xmlparser as new Xerces.DOMDocument
   Dim xmlparser as new DOMDocument
   Set object = CreateObject("Xerces.DOMDocument") 
  -set object = CreateObject("Xerces.DOMDocument.1.3")
  +set object = CreateObject("Xerces.DOMDocument.1.4")
   
   If you leave both MSXML and Xerces in the same project, you may need to disambiguate interfaces by prepending MSXML or Xerces.
   
  
  
  
  1.5       +24 -5     xml-xerces/c/src/com/XMLDOMAttribute.cpp
  
  Index: XMLDOMAttribute.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMAttribute.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLDOMAttribute.cpp	2000/09/29 23:07:02	1.4
  +++ XMLDOMAttribute.cpp	2001/01/19 15:18:00	1.5
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: XMLDOMAttribute.cpp,v 1.4 2000/09/29 23:07:02 aruna1 Exp $
  + * $Id: XMLDOMAttribute.cpp,v 1.5 2001/01/19 15:18:00 tng Exp $
    */
   
   #include "stdafx.h"
  @@ -75,6 +75,9 @@
   		DOMString val = attr.getName();
   		*pVal = SysAllocStringLen(val.rawBuffer(),val.length());
   	}
  +	catch(DOM_DOMException& ex) {
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -95,10 +98,13 @@
   
   	try
   	{
  -		V_VT(pVal)   = VT_BSTR;
   		DOMString val = attr.getValue();
  +		V_VT(pVal)   = VT_BSTR;
   		V_BSTR(pVal) = SysAllocStringLen(val.rawBuffer(),val.length());
   	}
  +	catch(DOM_DOMException& ex) {
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -114,11 +120,18 @@
   
   	try
   	{
  -		if (V_VT(&newVal) != VT_BSTR)
  -			return E_FAIL;
  +		if(V_VT(&newVal) == VT_BSTR) {
  +			attr.setValue(V_BSTR(&newVal));
  +		}
  +		else {
  +			attr.setValue((BSTR) (_bstr_t) newVal);
  +		}
   
   		attr.setValue(V_BSTR(&newVal));
   	}
  +	catch(DOM_DOMException& ex) {
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -136,6 +149,9 @@
   	{
   		*pVal = attr.getSpecified() ? VARIANT_TRUE : VARIANT_FALSE;
   	}
  +	catch(DOM_DOMException& ex) {
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -156,9 +172,12 @@
   
   	try
   	{
  -		V_VT(pVal)   = VT_BSTR;
   		DOMString val = attr.getValue();
  +		V_VT(pVal)   = VT_BSTR;
   		V_BSTR(pVal) = SysAllocStringLen(val.rawBuffer(),val.length());
  +	}
  +	catch(DOM_DOMException& ex) {
  +		return MakeHRESULT(ex);
   	}
   	catch(...)
   	{
  
  
  
  1.6       +2 -1      xml-xerces/c/src/com/XMLDOMAttribute.h
  
  Index: XMLDOMAttribute.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMAttribute.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XMLDOMAttribute.h	2000/09/29 23:07:03	1.5
  +++ XMLDOMAttribute.h	2001/01/19 15:18:02	1.6
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: XMLDOMAttribute.h,v 1.5 2000/09/29 23:07:03 aruna1 Exp $
  + * $Id: XMLDOMAttribute.h,v 1.6 2001/01/19 15:18:02 tng Exp $
    */
   
   #ifndef ___xmldomattribute_h___
  @@ -87,6 +87,7 @@
   	COM_INTERFACE_ENTRY(IXMLDOMAttribute)
   	COM_INTERFACE_ENTRY(IXMLDOMNode)
   	COM_INTERFACE_ENTRY(IIBMXMLDOMNodeIdentity)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   	COM_INTERFACE_ENTRY(IDispatch)
   END_COM_MAP()
   	
  
  
  
  1.4       +4 -0      xml-xerces/c/src/com/XMLDOMCDATASection.h
  
  Index: XMLDOMCDATASection.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMCDATASection.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMCDATASection.h	2000/06/03 00:28:55	1.3
  +++ XMLDOMCDATASection.h	2001/01/19 15:18:04	1.4
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMCDATASection.h,v $
  + * Revision 1.4  2001/01/19 15:18:04  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.3  2000/06/03 00:28:55  andyh
    * COM Wrapper changes from Curt Arnold
    *
  @@ -96,6 +102,7 @@
   	COM_INTERFACE_ENTRY(IXMLDOMCharacterData)
   	COM_INTERFACE_ENTRY(IXMLDOMNode)
   	COM_INTERFACE_ENTRY(IIBMXMLDOMNodeIdentity)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   	COM_INTERFACE_ENTRY(IDispatch)
   END_COM_MAP()
   
  
  
  
  1.4       +4 -0      xml-xerces/c/src/com/XMLDOMComment.h
  
  Index: XMLDOMComment.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMComment.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMComment.h	2000/06/03 00:28:57	1.3
  +++ XMLDOMComment.h	2001/01/19 15:18:05	1.4
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMComment.h,v $
  + * Revision 1.4  2001/01/19 15:18:05  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.3  2000/06/03 00:28:57  andyh
    * COM Wrapper changes from Curt Arnold
    *
  @@ -94,6 +100,7 @@
   	COM_INTERFACE_ENTRY(IXMLDOMCharacterData)
   	COM_INTERFACE_ENTRY(IXMLDOMNode)
   	COM_INTERFACE_ENTRY(IIBMXMLDOMNodeIdentity)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   	COM_INTERFACE_ENTRY(IDispatch)
   END_COM_MAP()
   
  
  
  
  1.7       +71 -1     xml-xerces/c/src/com/XMLDOMDocument.cpp
  
  Index: XMLDOMDocument.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMDocument.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XMLDOMDocument.cpp	2000/10/13 23:55:27	1.6
  +++ XMLDOMDocument.cpp	2001/01/19 15:18:08	1.7
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: XMLDOMDocument.cpp,v 1.6 2000/10/13 23:55:27 andyh Exp $
  + * $Id: XMLDOMDocument.cpp,v 1.7 2001/01/19 15:18:08 tng Exp $
    */
   
   #include "stdafx.h"
  @@ -334,6 +334,11 @@
   	{
   		pObj->element = m_Document.getDocumentElement();
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release();
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -362,6 +367,10 @@
   			return S_OK;
   		}
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -387,6 +396,10 @@
   		else
   			m_Document.replaceChild(*pNewValNode, elem);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -416,6 +429,11 @@
   	{
   		pObj->element = m_Document.createElement(tagName);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release();
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -451,6 +469,11 @@
   	{
   		pObj->documentFragment = m_Document.createDocumentFragment();
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release();
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -486,6 +509,11 @@
   	{
   		pObj->text = m_Document.createTextNode(data);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release();
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -521,6 +549,11 @@
   	{
   		pObj->comment = m_Document.createComment(data);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release();
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -556,6 +589,11 @@
   	{
   		pObj->cdataSection = m_Document.createCDATASection(data);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release();
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -591,6 +629,11 @@
   	{
   		pObj->processingInstruction = m_Document.createProcessingInstruction(target, data);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release();
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -626,6 +669,11 @@
   	{
   		pObj->attr = m_Document.createAttribute(name);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release();
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -661,6 +709,11 @@
   	{
   		pObj->entityReference = m_Document.createEntityReference(name);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release();
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -696,6 +749,11 @@
   	{
   		pObj->m_container = m_Document.getElementsByTagName(tagName);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release();
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -818,6 +876,10 @@
   			break;
   	}
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		hr = MakeHRESULT(ex);
  +	}
   	catch (...)
   	{
   		hr = E_FAIL;
  @@ -840,6 +902,10 @@
   	{
   		hr = wrapNode(m_pIXMLDOMDocument, m_Document.getElementById(idString),IID_IXMLDOMNode,reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -1402,6 +1468,10 @@
   			DOM_Node child = childs.item(i);
   			GetXML(child,text);
   		}
  +	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
   	}
   	catch(...)
   	{
  
  
  
  1.5       +5 -1      xml-xerces/c/src/com/XMLDOMDocument.h
  
  Index: XMLDOMDocument.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMDocument.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLDOMDocument.h	2000/06/19 20:05:58	1.4
  +++ XMLDOMDocument.h	2001/01/19 15:18:10	1.5
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMDocument.h,v $
  + * Revision 1.5  2001/01/19 15:18:10  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.4  2000/06/19 20:05:58  rahulj
    * Changes for increased conformance and stability. Submitted by
    * Curt.Arnold@hyprotech.com. Verified by Joe Polastre.
  @@ -88,7 +94,6 @@
   	public IObjectSafetyImpl<CXMLDOMDocument, INTERFACESAFE_FOR_UNTRUSTED_CALLER>,
   	public IXMLDOMNodeImpl<IXMLDOMDocument, &IID_IXMLDOMDocument, &LIBID_Xerces>,
   	public IObjectWithSiteImpl<CXMLDOMDocument>,
  -	public ISupportErrorInfo,
   	public CProxyXMLDOMDocumentEvents< CXMLDOMDocument >,
   	public IConnectionPointContainerImpl<CXMLDOMDocument>,
   	public IProvideClassInfo2Impl<&CLSID_DOMDocument, &DIID_XMLDOMDocumentEvents, &LIBID_Xerces>,
  @@ -124,6 +129,7 @@
   	COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
   	COM_INTERFACE_ENTRY(IProvideClassInfo)
   	COM_INTERFACE_ENTRY(IProvideClassInfo2)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   END_COM_MAP()
   
   BEGIN_CONNECTION_POINT_MAP(CXMLDOMDocument)
  
  
  
  1.4       +4 -0      xml-xerces/c/src/com/XMLDOMDocumentFragment.h
  
  Index: XMLDOMDocumentFragment.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMDocumentFragment.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMDocumentFragment.h	2000/06/03 00:28:58	1.3
  +++ XMLDOMDocumentFragment.h	2001/01/19 15:18:11	1.4
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMDocumentFragment.h,v $
  + * Revision 1.4  2001/01/19 15:18:11  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.3  2000/06/03 00:28:58  andyh
    * COM Wrapper changes from Curt Arnold
    *
  @@ -95,6 +101,7 @@
   	COM_INTERFACE_ENTRY(IXMLDOMNode)
   	COM_INTERFACE_ENTRY(IIBMXMLDOMNodeIdentity)
   	COM_INTERFACE_ENTRY(IDispatch)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   END_COM_MAP()
   
   	DOM_DocumentFragment documentFragment;
  
  
  
  1.4       +15 -1     xml-xerces/c/src/com/XMLDOMDocumentType.cpp
  
  Index: XMLDOMDocumentType.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMDocumentType.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMDocumentType.cpp	2000/09/29 23:07:04	1.3
  +++ XMLDOMDocumentType.cpp	2001/01/19 15:18:14	1.4
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: XMLDOMDocumentType.cpp,v 1.3 2000/09/29 23:07:04 aruna1 Exp $
  + * $Id: XMLDOMDocumentType.cpp,v 1.4 2001/01/19 15:18:14 tng Exp $
    */
   
   #include "stdafx.h"
  @@ -78,6 +78,10 @@
   		DOMString val = documentType.getName();
   		*pVal = SysAllocStringLen(val.rawBuffer(),val.length());
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -108,6 +112,11 @@
   	{
   		pObj->m_container = documentType.getEntities();
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release(); 
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -142,6 +151,11 @@
   	try
   	{
   		pObj->m_container = documentType.getNotations();
  +	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release(); 
  +		return MakeHRESULT(ex);
   	}
   	catch(...)
   	{
  
  
  
  1.4       +4 -0      xml-xerces/c/src/com/XMLDOMDocumentType.h
  
  Index: XMLDOMDocumentType.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMDocumentType.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMDocumentType.h	2000/06/03 00:28:58	1.3
  +++ XMLDOMDocumentType.h	2001/01/19 15:18:15	1.4
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMDocumentType.h,v $
  + * Revision 1.4  2001/01/19 15:18:15  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.3  2000/06/03 00:28:58  andyh
    * COM Wrapper changes from Curt Arnold
    *
  @@ -94,6 +100,7 @@
   	COM_INTERFACE_ENTRY(IXMLDOMNode)
   	COM_INTERFACE_ENTRY(IIBMXMLDOMNodeIdentity)
   	COM_INTERFACE_ENTRY(IDispatch)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   END_COM_MAP()
   
   	// IXMLDOMDocumentType methods
  
  
  
  1.6       +47 -5     xml-xerces/c/src/com/XMLDOMElement.cpp
  
  Index: XMLDOMElement.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMElement.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XMLDOMElement.cpp	2000/09/29 23:07:04	1.5
  +++ XMLDOMElement.cpp	2001/01/19 15:18:17	1.6
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: XMLDOMElement.cpp,v 1.5 2000/09/29 23:07:04 aruna1 Exp $
  + * $Id: XMLDOMElement.cpp,v 1.6 2001/01/19 15:18:17 tng Exp $
    */
   
   #include "stdafx.h"
  @@ -79,6 +79,10 @@
   		DOMString val = element.getTagName();
   		*pVal = SysAllocStringLen(val.rawBuffer(),val.length());
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -103,6 +107,10 @@
   		V_VT(pVal)   = VT_BSTR;
   		V_BSTR(pVal) = SysAllocStringLen(a.rawBuffer(),a.length());
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...) {
   		return E_FAIL;
   	}
  @@ -116,10 +124,17 @@
   
   	try
   	{
  -		if (V_VT(&value) != VT_BSTR)
  -			return E_INVALIDARG;
  -
  -		element.setAttribute(name, value.bstrVal);
  +		if (V_VT(&value) == VT_BSTR)
  +		{
  +			element.setAttribute(name, value.bstrVal);
  +		}
  +		else {
  +			element.setAttribute(name,(BSTR) (_bstr_t) value);
  +		}
  +	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
   	}
   	catch(...)
   	{
  @@ -138,6 +153,10 @@
   	{
   		element.removeAttribute(name);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -171,6 +190,11 @@
   	{
   		pObj->attr = attrNode;
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release(); 
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -239,6 +263,10 @@
   			}
   		}
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -275,6 +303,11 @@
   		}
   		pObj->attr = element.removeAttributeNode(*((DOM_Attr*) id));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release(); 
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -310,6 +343,11 @@
   	{
   		pObj->m_container = element.getElementsByTagName(tagName);
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		pObj->Release(); 
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		pObj->Release(); 
  @@ -331,6 +369,10 @@
   	try
   	{
   		element.normalize();
  +	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
   	}
   	catch(...)
   	{
  
  
  
  1.4       +4 -0      xml-xerces/c/src/com/XMLDOMElement.h
  
  Index: XMLDOMElement.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMElement.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMElement.h	2000/06/03 00:28:59	1.3
  +++ XMLDOMElement.h	2001/01/19 15:18:18	1.4
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMElement.h,v $
  + * Revision 1.4  2001/01/19 15:18:18  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.3  2000/06/03 00:28:59  andyh
    * COM Wrapper changes from Curt Arnold
    *
  @@ -95,6 +101,7 @@
   	COM_INTERFACE_ENTRY(IXMLDOMNode)
   	COM_INTERFACE_ENTRY(IIBMXMLDOMNodeIdentity)
   	COM_INTERFACE_ENTRY(IDispatch)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   END_COM_MAP()
   
   	// IXMLDOMElement methods
  
  
  
  1.4       +28 -5     xml-xerces/c/src/com/XMLDOMEntity.cpp
  
  Index: XMLDOMEntity.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMEntity.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMEntity.cpp	2000/09/29 23:07:05	1.3
  +++ XMLDOMEntity.cpp	2001/01/19 15:18:21	1.4
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: XMLDOMEntity.cpp,v 1.3 2000/09/29 23:07:05 aruna1 Exp $
  + * $Id: XMLDOMEntity.cpp,v 1.4 2001/01/19 15:18:21 tng Exp $
    */
   
   #include "stdafx.h"
  @@ -74,10 +74,20 @@
   
   	try
   	{
  -		V_VT(pVal)   = VT_BSTR;
   		DOMString val = entity.getPublicId();
  -		V_BSTR(pVal) = SysAllocStringLen(val.rawBuffer(),val.length());
  +		if(val == NULL) 
  +		{
  +			V_VT(pVal) = VT_NULL;
  +		}
  +		else 
  +		{
  +			V_VT(pVal)   = VT_BSTR;
  +			V_BSTR(pVal) = SysAllocStringLen(val.rawBuffer(),val.length());
  +		}
   	}
  +	catch(DOM_DOMException& ex) {
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -97,9 +107,19 @@
   
   	try
   	{
  -		V_VT(pVal)   = VT_BSTR;
   		DOMString val = entity.getSystemId();
  -		V_BSTR(pVal) = SysAllocStringLen(val.rawBuffer(),val.length());
  +		if(val == NULL) 
  +		{
  +			V_VT(pVal) = VT_NULL;
  +		}
  +		else 
  +		{
  +			V_VT(pVal)   = VT_BSTR;
  +			V_BSTR(pVal) = SysAllocStringLen(val.rawBuffer(),val.length());
  +		}
  +	}
  +	catch(DOM_DOMException& ex) {
  +		return MakeHRESULT(ex);
   	}
   	catch(...)
   	{
  @@ -122,6 +142,9 @@
   	{
   		DOMString val = entity.getNotationName();
   		*pVal = SysAllocStringLen(val.rawBuffer(),val.length());
  +	}
  +	catch(DOM_DOMException& ex) {
  +		return MakeHRESULT(ex);
   	}
   	catch(...)
   	{
  
  
  
  1.4       +4 -0      xml-xerces/c/src/com/XMLDOMEntityReference.h
  
  Index: XMLDOMEntityReference.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMEntityReference.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMEntityReference.h	2000/06/03 00:28:59	1.3
  +++ XMLDOMEntityReference.h	2001/01/19 15:18:23	1.4
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMEntityReference.h,v $
  + * Revision 1.4  2001/01/19 15:18:23  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.3  2000/06/03 00:28:59  andyh
    * COM Wrapper changes from Curt Arnold
    *
  @@ -94,6 +100,7 @@
   	COM_INTERFACE_ENTRY(IXMLDOMNode)
   	COM_INTERFACE_ENTRY(IIBMXMLDOMNodeIdentity)
   	COM_INTERFACE_ENTRY(IDispatch)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   END_COM_MAP()
   
   	DOM_EntityReference entityReference;
  
  
  
  1.5       +36 -1     xml-xerces/c/src/com/XMLDOMNamedNodeMap.cpp
  
  Index: XMLDOMNamedNodeMap.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMNamedNodeMap.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLDOMNamedNodeMap.cpp	2000/09/29 23:07:05	1.4
  +++ XMLDOMNamedNodeMap.cpp	2001/01/19 15:18:24	1.5
  @@ -55,13 +55,14 @@
    */
   
   /*
  - * $Id: XMLDOMNamedNodeMap.cpp,v 1.4 2000/09/29 23:07:05 aruna1 Exp $
  + * $Id: XMLDOMNamedNodeMap.cpp,v 1.5 2001/01/19 15:18:24 tng Exp $
    */
   
   #include "stdafx.h"
   #include "xml4com.h"
   #include "XMLDOMNamedNodeMap.h"
   #include "XMLDOMUtil.h"
  +#include "IXMLDOMNodeImpl.h"
   
   typedef CComEnumOnSTL<IEnumVARIANT, &IID_IEnumVARIANT, VARIANT, _Copy<VARIANT>, NodeContainerImpl<DOM_NamedNodeMap> >
   		CComEnumUnknownOnNamedNodeContainer;
  @@ -85,6 +86,10 @@
   		if(!n.isNull())
   			hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -131,6 +136,10 @@
   		if(!n.isNull())
   			hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -187,6 +196,10 @@
   		if (index < length)
   			hr = wrapNode(m_pIXMLDOMDocument,m_container.item(index),IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -211,6 +224,10 @@
   	{
   		*pVal = m_container.getLength();
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -239,6 +256,10 @@
   		if(!n.isNull())
   			hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -267,6 +288,10 @@
   		if(!n.isNull())
   			hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -301,6 +326,10 @@
   		if(!n.isNull())
   			hr = wrapNode(m_pIXMLDOMDocument,n,IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -343,4 +372,10 @@
   	pe->Release();
   
   	return hr;
  +}
  +
  +HRESULT CXMLDOMNamedNodeMap::InterfaceSupportsErrorInfo(REFIID riid) 
  +{
  +	if(riid == IID_IXMLDOMNamedNodeMap) return S_OK;
  +	return S_FALSE;
   }
  
  
  
  1.4       +10 -1     xml-xerces/c/src/com/XMLDOMNamedNodeMap.h
  
  Index: XMLDOMNamedNodeMap.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMNamedNodeMap.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMNamedNodeMap.h	2000/06/03 00:29:00	1.3
  +++ XMLDOMNamedNodeMap.h	2001/01/19 15:18:26	1.4
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMNamedNodeMap.h,v $
  + * Revision 1.4  2001/01/19 15:18:26  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.3  2000/06/03 00:29:00  andyh
    * COM Wrapper changes from Curt Arnold
    *
  @@ -73,7 +79,8 @@
   class ATL_NO_VTABLE CXMLDOMNamedNodeMap : 
   	public CComObjectRootEx<CComSingleThreadModel>,
   	public IDispatchImpl<IXMLDOMNamedNodeMap, &IID_IXMLDOMNamedNodeMap, &LIBID_Xerces>,
  -	public NodeContainerImpl<DOM_NamedNodeMap>
  +	public NodeContainerImpl<DOM_NamedNodeMap>,
  +	public ISupportErrorInfo
   {
   public:
   	CXMLDOMNamedNodeMap()
  @@ -90,8 +97,13 @@
   BEGIN_COM_MAP(CXMLDOMNamedNodeMap)
   	COM_INTERFACE_ENTRY(IXMLDOMNamedNodeMap)
   	COM_INTERFACE_ENTRY(IDispatch)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   END_COM_MAP()
     
  +
  +	//   ISupportErrorInfo
  +	HRESULT STDMETHODCALLTYPE InterfaceSupportsErrorInfo(REFIID iid);
  +
   	// IXMLDOMNamedNodeMap methods
   	STDMETHOD(getNamedItem)(BSTR name, IXMLDOMNode  * *namedItem);
   	STDMETHOD(setNamedItem)(IXMLDOMNode  *newItem, IXMLDOMNode  * *nameItem);
  
  
  
  1.5       +22 -1     xml-xerces/c/src/com/XMLDOMNodeList.cpp
  
  Index: XMLDOMNodeList.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMNodeList.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLDOMNodeList.cpp	2000/09/29 23:07:05	1.4
  +++ XMLDOMNodeList.cpp	2001/01/19 15:18:27	1.5
  @@ -55,13 +55,14 @@
    */
   
   /*
  - * $Id: XMLDOMNodeList.cpp,v 1.4 2000/09/29 23:07:05 aruna1 Exp $
  + * $Id: XMLDOMNodeList.cpp,v 1.5 2001/01/19 15:18:27 tng Exp $
    */
   
   #include "stdafx.h"
   #include "xml4com.h"
   #include "XMLDOMNodeList.h"
   #include "XMLDOMUtil.h"
  +#include "IXMLDOMNodeImpl.h"
   
   typedef CComEnumOnSTL<IEnumVARIANT, &IID_IEnumVARIANT, VARIANT, _Copy<VARIANT>,NodeContainerImpl<DOM_NodeList> >
   		CComEnumUnknownOnNodeContainer;
  @@ -89,6 +90,11 @@
   		if (index < length)
   			hr = wrapNode(m_pIXMLDOMDocument,m_container.item(index),IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
  +
   	catch(...)
   	{
   		return E_FAIL;
  @@ -113,6 +119,10 @@
   	{
   		*pVal = m_container.getLength();
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -147,6 +157,10 @@
   	{
   		hr = wrapNode(m_pIXMLDOMDocument,m_container.item(m_NextNodeIndex),IID_IXMLDOMNode, reinterpret_cast<LPVOID *> (pVal));
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -190,3 +204,10 @@
   
   	return hr;
   }
  +
  +
  +HRESULT CXMLDOMNodeList::InterfaceSupportsErrorInfo(REFIID riid) 
  +{
  +	if(riid == IID_IXMLDOMNodeList) return S_OK;
  +	return S_FALSE;
  +}
  \ No newline at end of file
  
  
  
  1.4       +10 -1     xml-xerces/c/src/com/XMLDOMNodeList.h
  
  Index: XMLDOMNodeList.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMNodeList.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMNodeList.h	2000/06/03 00:29:00	1.3
  +++ XMLDOMNodeList.h	2001/01/19 15:18:28	1.4
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMNodeList.h,v $
  + * Revision 1.4  2001/01/19 15:18:28  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.3  2000/06/03 00:29:00  andyh
    * COM Wrapper changes from Curt Arnold
    *
  @@ -73,7 +79,8 @@
   class ATL_NO_VTABLE CXMLDOMNodeList : 
   	public CComObjectRootEx<CComSingleThreadModel>,
   	public IDispatchImpl<IXMLDOMNodeList, &IID_IXMLDOMNodeList, &LIBID_Xerces>,
  -	public NodeContainerImpl<DOM_NodeList>
  +	public NodeContainerImpl<DOM_NodeList>,
  +	public ISupportErrorInfo
   {
   public:
   	CXMLDOMNodeList()
  @@ -90,7 +97,12 @@
   BEGIN_COM_MAP(CXMLDOMNodeList)
   	COM_INTERFACE_ENTRY(IXMLDOMNodeList)
   	COM_INTERFACE_ENTRY(IDispatch)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   END_COM_MAP()
  +
  +	//   ISupportErrorInfo
  +	HRESULT STDMETHODCALLTYPE InterfaceSupportsErrorInfo(REFIID iid);
  +	
   
   	// IXMLDOMNodeList
   	STDMETHOD(get_item)(long index, IXMLDOMNode  **pVal);
  
  
  
  1.4       +27 -5     xml-xerces/c/src/com/XMLDOMNotation.cpp
  
  Index: XMLDOMNotation.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMNotation.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMNotation.cpp	2000/09/29 23:07:05	1.3
  +++ XMLDOMNotation.cpp	2001/01/19 15:18:29	1.4
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: XMLDOMNotation.cpp,v 1.3 2000/09/29 23:07:05 aruna1 Exp $
  + * $Id: XMLDOMNotation.cpp,v 1.4 2001/01/19 15:18:29 tng Exp $
    */
   
   #include "stdafx.h"
  @@ -73,10 +73,21 @@
   
   	try
   	{
  -		V_VT(pVal) = VT_BSTR;
   		DOMString val = notation.getPublicId();
  -		V_BSTR(pVal) = SysAllocStringLen(val.rawBuffer(),val.length());
  +		if(val == NULL) 
  +		{
  +			V_VT(pVal) = VT_NULL;
  +		}
  +		else 
  +		{
  +			V_VT(pVal) = VT_BSTR;
  +			V_BSTR(pVal) = SysAllocStringLen(val.rawBuffer(),val.length());
  +		}
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -97,9 +108,20 @@
   
   	try
   	{
  -		V_VT(pVal) = VT_BSTR;
   		DOMString val = notation.getSystemId();
  -		V_BSTR(pVal) = SysAllocStringLen(val.rawBuffer(),val.length());
  +		if(val == NULL) 
  +		{
  +			V_VT(pVal) = VT_NULL;
  +		}
  +		else 
  +		{
  +			V_VT(pVal) = VT_BSTR;
  +			V_BSTR(pVal) = SysAllocStringLen(val.rawBuffer(),val.length());
  +		}
  +	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
   	}
   	catch(...)
   	{
  
  
  
  1.4       +4 -0      xml-xerces/c/src/com/XMLDOMNotation.h
  
  Index: XMLDOMNotation.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMNotation.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMNotation.h	2000/06/03 00:29:00	1.3
  +++ XMLDOMNotation.h	2001/01/19 15:18:30	1.4
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMNotation.h,v $
  + * Revision 1.4  2001/01/19 15:18:30  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.3  2000/06/03 00:29:00  andyh
    * COM Wrapper changes from Curt Arnold
    *
  @@ -94,6 +100,7 @@
   	COM_INTERFACE_ENTRY(IXMLDOMNode)
   	COM_INTERFACE_ENTRY(IIBMXMLDOMNodeIdentity)
   	COM_INTERFACE_ENTRY(IDispatch)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   END_COM_MAP()
   
   	// IXMLDOMNotation methods
  
  
  
  1.4       +14 -1     xml-xerces/c/src/com/XMLDOMProcessingInstruction.cpp
  
  Index: XMLDOMProcessingInstruction.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMProcessingInstruction.cpp,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMProcessingInstruction.cpp	2000/09/29 23:07:05	1.3
  +++ XMLDOMProcessingInstruction.cpp	2001/01/19 15:18:32	1.4
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: XMLDOMProcessingInstruction.cpp,v 1.3 2000/09/29 23:07:05 aruna1 Exp $
  + * $Id: XMLDOMProcessingInstruction.cpp,v 1.4 2001/01/19 15:18:32 tng Exp $
    */
   
   #include "stdafx.h"
  @@ -77,6 +77,11 @@
   		DOMString val = processingInstruction.getTarget();
   		*pVal = SysAllocStringLen(val.rawBuffer(),val.length());
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
  +
   	catch(...)
   	{
   		return E_FAIL;
  @@ -99,6 +104,10 @@
   		DOMString val = processingInstruction.getData();
   		*pVal = SysAllocStringLen(val.rawBuffer(),val.length());
   	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
  +	}
   	catch(...)
   	{
   		return E_FAIL;
  @@ -115,6 +124,10 @@
   	try
   	{
   		processingInstruction.setData(newVal);
  +	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
   	}
   	catch(...)
   	{
  
  
  
  1.4       +4 -0      xml-xerces/c/src/com/XMLDOMProcessingInstruction.h
  
  Index: XMLDOMProcessingInstruction.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMProcessingInstruction.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMProcessingInstruction.h	2000/06/03 00:29:01	1.3
  +++ XMLDOMProcessingInstruction.h	2001/01/19 15:18:33	1.4
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMProcessingInstruction.h,v $
  + * Revision 1.4  2001/01/19 15:18:33  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.3  2000/06/03 00:29:01  andyh
    * COM Wrapper changes from Curt Arnold
    *
  @@ -94,6 +100,7 @@
   	COM_INTERFACE_ENTRY(IXMLDOMNode)
   	COM_INTERFACE_ENTRY(IIBMXMLDOMNodeIdentity)
   	COM_INTERFACE_ENTRY(IDispatch)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   END_COM_MAP()
   
   	// IXMLDOMProcessingInstruction methods
  
  
  
  1.4       +4 -0      xml-xerces/c/src/com/XMLDOMText.h
  
  Index: XMLDOMText.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMText.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XMLDOMText.h	2000/06/03 00:29:01	1.3
  +++ XMLDOMText.h	2001/01/19 15:18:34	1.4
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: XMLDOMText.h,v $
  + * Revision 1.4  2001/01/19 15:18:34  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.3  2000/06/03 00:29:01  andyh
    * COM Wrapper changes from Curt Arnold
    *
  @@ -95,6 +101,7 @@
   	COM_INTERFACE_ENTRY(IXMLDOMNode)
   	COM_INTERFACE_ENTRY(IIBMXMLDOMNodeIdentity)
   	COM_INTERFACE_ENTRY(IDispatch)
  +	COM_INTERFACE_ENTRY(ISupportErrorInfo)
   END_COM_MAP()
   	
   	DOM_Text text;
  
  
  
  1.6       +66 -1     xml-xerces/c/src/com/XMLDOMUtil.cpp
  
  Index: XMLDOMUtil.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMUtil.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XMLDOMUtil.cpp	2000/09/29 23:07:05	1.5
  +++ XMLDOMUtil.cpp	2001/01/19 15:18:36	1.6
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: XMLDOMUtil.cpp,v 1.5 2000/09/29 23:07:05 aruna1 Exp $
  + * $Id: XMLDOMUtil.cpp,v 1.6 2001/01/19 15:18:36 tng Exp $
    */
   
   #include "stdafx.h"
  @@ -340,6 +340,11 @@
   		{
   			pObj->element = *(static_cast<DOM_Element*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -367,6 +372,11 @@
   		{
   			pObj->attr = *(static_cast<DOM_Attr*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -394,6 +404,11 @@
   		{
   			pObj->text = *(static_cast<DOM_Text*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -421,6 +436,11 @@
   		{
   			pObj->cdataSection = *(static_cast<DOM_CDATASection*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -448,6 +468,11 @@
   		{
   			pObj->entityReference = *(static_cast<DOM_EntityReference*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -475,6 +500,11 @@
   		{
   			pObj->entity = *(static_cast<DOM_Entity*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -502,6 +532,11 @@
   		{
   			pObj->processingInstruction = *(static_cast<DOM_ProcessingInstruction*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -529,6 +564,11 @@
   		{
   			pObj->comment = *(static_cast<DOM_Comment*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -556,6 +596,11 @@
   		{
   			pObj->m_Document = *(static_cast<DOM_Document*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -583,6 +628,11 @@
   		{
   			pObj->documentType = *(static_cast<DOM_DocumentType*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -610,6 +660,11 @@
   		{
   			pObj->documentFragment = *(static_cast<DOM_DocumentFragment*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -637,6 +692,11 @@
   		{
   			pObj->notation = *(static_cast<DOM_Notation*> (&node));
   		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
  +		}
   		catch(...)
   		{
   			pObj->Release(); 
  @@ -664,6 +724,11 @@
   		try
   		{
   			pObj->xmlDecl = *(static_cast<DOM_XMLDecl*> (&node));
  +		}
  +		catch(DOM_DOMException& ex) 
  +		{
  +			pObj->Release(); 
  +			return MakeHRESULT(ex);
   		}
   		catch(...)
   		{
  
  
  
  1.3       +5 -1      xml-xerces/c/src/com/XMLDOMXMLDecl.cpp
  
  Index: XMLDOMXMLDecl.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/XMLDOMXMLDecl.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XMLDOMXMLDecl.cpp	2000/09/29 23:07:05	1.2
  +++ XMLDOMXMLDecl.cpp	2001/01/19 15:18:37	1.3
  @@ -54,7 +54,7 @@
    * <http://www.apache.org/>.
    */
   /*
  - * $Id: XMLDOMXMLDecl.cpp,v 1.2 2000/09/29 23:07:05 aruna1 Exp $
  + * $Id: XMLDOMXMLDecl.cpp,v 1.3 2001/01/19 15:18:37 tng Exp $
    */
   
   #include "stdafx.h"
  @@ -150,6 +150,10 @@
   			wcscat(*pVal,OLESTR("\""));
   		}
   
  +	}
  +	catch(DOM_DOMException& ex) 
  +	{
  +		return MakeHRESULT(ex);
   	}
   	catch(...)
   	{
  
  
  
  1.5       +66 -1     xml-xerces/c/src/com/xml4com.cpp
  
  Index: xml4com.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/xml4com.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- xml4com.cpp	2000/06/19 20:05:59	1.4
  +++ xml4com.cpp	2001/01/19 15:18:39	1.5
  @@ -56,6 +56,12 @@
   
   /*
    * $Log: xml4com.cpp,v $
  + * Revision 1.5  2001/01/19 15:18:39  tng
  + * COM Updates by Curt Arnold: changed 1.3 to 1.4, updated the GUID's so
  + * both can coexist and fixed a new minor bugs.  Most of the changes involved
  + * error reporting, now a DOM defined error will return an HRESULT of
  + * 0x80040600 + code and will set an error description to the error name.
  + *
    * Revision 1.4  2000/06/19 20:05:59  rahulj
    * Changes for increased conformance and stability. Submitted by
    * Curt.Arnold@hyprotech.com. Verified by Joe Polastre.
  @@ -96,7 +102,7 @@
   
   #include <util/PlatformUtils.hpp>
   #include "xml4com.h"
  -
  +#include <dom/DOM_DOMException.hpp>
   
   //
   //
  @@ -285,5 +291,66 @@
   #endif
       return _Module.UnregisterServer(TRUE);
   }
  +
  +
  +static LPOLESTR Msgs[] =
  +{
  +	OLESTR("UNDEFINED DOM ERROR"),
  +	OLESTR("INDEX_SIZE_ERR"),   // INDEX_SIZE_ERR =  1
  +	OLESTR("DOMSTRING_SIZE_ERR"),  // DOMSTRING_SIZE_ERR =  2
  +	OLESTR("HIERARCHY_REQUEST_ERR"),   // HIERARCHY_REQUEST_ERR =  3
  +	OLESTR("WRONG_DOCUMENT_ERR"),   // WRONG_DOCUMENT_ERR =  4
  +	OLESTR("INVALID_CHARACTER_ERR"),   // INVALID_CHARACTER_ERR =  5
  +	OLESTR("NO_DATA_ALLOWED_ERR"),   // NO_DATA_ALLOWED_ERR =  6
  +	OLESTR("NO_MODIFICATION_ALLOWED_ERR"),   // NO_MODIFICATION_ALLOWED_ERR =  7
  +	OLESTR("NOT_FOUND_ERR"),   // NOT_FOUND_ERR =  8
  +	OLESTR("NOT_SUPPORTED_ERR"),   // NOT_SUPPORTED_ERR =  9
  +	OLESTR("INUSE_ATTRIBUTE_ERR"),   // INUSE_ATTRIBUTE_ERR =  10
  +	OLESTR("INVALID_STATE_ERR"),   // INVALID_STATE_ERR =  11
  +	OLESTR("SYNTAX_ERR	"),   // 	SYNTAX_ERR	 =  12
  +	OLESTR("INVALID_MODIFICATION_ERR"),   // 	INVALID_MODIFICATION_ERR =  13
  +	OLESTR("NAMESPACE_ERR"),   // 	NAMESPACE_ERR	 =  14
  +	OLESTR("INVALID_ACCESS_ERR") // INVALID_ACCESS_ERR   = 15
  +};
  +
  +//
  +//
  +//   makes an HRESULT with a code based on the DOM error code
  +//
  +HRESULT MakeHRESULT(DOM_DOMException& ex) 
  +{
  +	ICreateErrorInfo* pCErr = NULL;
  +	HRESULT sc = CreateErrorInfo(&pCErr);
  +	if(SUCCEEDED(sc)) {
  +		DOMString msg = ex.msg;
  +		if(msg == NULL) 
  +		{
  +			if(ex.code >= DOM_DOMException::INDEX_SIZE_ERR &&
  +				ex.code <= DOM_DOMException::INVALID_ACCESS_ERR) 
  +			{
  +				sc = pCErr->SetDescription(Msgs[ex.code]);
  +			}
  +			else 
  +			{
  +				sc = pCErr->SetDescription(Msgs[0]);
  +			}
  +		}
  +		else 
  +		{
  +			sc = pCErr->SetDescription((BSTR) ex.msg.rawBuffer());
  +		}
  +
  +		IErrorInfo* pErr = NULL;
  +		sc = pCErr->QueryInterface(IID_IErrorInfo,(void**) &pErr);
  +		if(SUCCEEDED(sc)) 
  +		{
  +			sc = SetErrorInfo(0,pErr);
  +			pErr->Release();
  +		}
  +		pCErr->Release();
  +	}
  +	return 0x80040600 + ex.code;
  +}
  +
   
   
  
  
  
  1.5       +5 -5      xml-xerces/c/src/com/xml4com.idl
  
  Index: xml4com.idl
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/xml4com.idl,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- xml4com.idl	2000/09/29 23:07:05	1.4
  +++ xml4com.idl	2001/01/19 15:18:41	1.5
  @@ -55,7 +55,7 @@
    */
   
   /*
  - * $Id: xml4com.idl,v 1.4 2000/09/29 23:07:05 aruna1 Exp $
  + * $Id: xml4com.idl,v 1.5 2001/01/19 15:18:41 tng Exp $
    */
    
   // This file will be processed by the MIDL tool to
  @@ -64,9 +64,9 @@
   import "oaidl.idl"; 
   
   [
  -	uuid(C58E1141-26F6-4d3a-AF76-6214CA435238),
  -	version(1.3),
  -	helpstring("Xerces XML Parser 1.3")
  +	uuid(C4775B62-ECD6-11d4-94B4-00A0CC57CBCB),
  +	version(1.4),
  +	helpstring("Xerces XML Parser 1.4")
   ]
   library Xerces
   {
  @@ -121,7 +121,7 @@
   	};
   
   	[
  -		uuid(988AE1AE-12FF-4c11-8847-BDD79C1B6B59),
  +		uuid(C4775B61-ECD6-11d4-94B4-00A0CC57CBCB),
   		helpstring("DOMDocument Class")
   	]
   	coclass DOMDocument
  
  
  
  1.4       +5 -5      xml-xerces/c/src/com/xml4com.rc
  
  Index: xml4com.rc
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/xml4com.rc,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- xml4com.rc	2000/09/29 23:07:05	1.3
  +++ xml4com.rc	2001/01/19 15:18:43	1.4
  @@ -111,8 +111,8 @@
   //
   
   VS_VERSION_INFO VERSIONINFO
  - FILEVERSION 1,3,0,0
  - PRODUCTVERSION 1,3,0,0
  + FILEVERSION 1,4,0,0
  + PRODUCTVERSION 1,4,0,0
    FILEFLAGSMASK 0x3fL
   #ifdef _DEBUG
    FILEFLAGS 0x1L
  @@ -130,15 +130,15 @@
               VALUE "Comments", "\0"
               VALUE "CompanyName", "Apache Software Foundation\0"
               VALUE "FileDescription", "Xerces XML Parser for COM\0"
  -            VALUE "FileVersion", "1, 3, 0\0"
  +            VALUE "FileVersion", "1, 4, 0\0"
               VALUE "InternalName", "Xerces XML Parser for COM \0"
               VALUE "LegalCopyright", "Copyright � Apache Software Foundation 2000 subject to licensing terms\0"
               VALUE "LegalTrademarks", "\0"
               VALUE "OLESelfRegister", "\0"
  -            VALUE "OriginalFilename", "xerces13-com.dll\0"
  +            VALUE "OriginalFilename", "xerces14-com.dll\0"
               VALUE "PrivateBuild", "\0"
               VALUE "ProductName", "Xerces XML Parser for COM\0"
  -            VALUE "ProductVersion", "1, 3, 0\0"
  +            VALUE "ProductVersion", "1, 4, 0\0"
               VALUE "SpecialBuild", "\0"
           END
       END
  
  
  
  1.4       +7 -7      xml-xerces/c/src/com/xmldocument.rgs
  
  Index: xmldocument.rgs
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/xmldocument.rgs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- xmldocument.rgs	2000/09/29 23:07:06	1.3
  +++ xmldocument.rgs	2001/01/19 15:18:44	1.4
  @@ -1,26 +1,26 @@
   HKCR
   {
  -	Xerces.DOMDocument.1.3 = s 'Apache Xerces Parser for COM'
  +	Xerces.DOMDocument.1.4 = s 'Apache Xerces Parser for COM'
   	{
  -		CLSID = s '{988AE1AE-12FF-4c11-8847-BDD79C1B6B59}'
  +		CLSID = s '{C4775B61-ECD6-11d4-94B4-00A0CC57CBCB}'
   	}
   	Xerces.DOMDocument = s 'Apache Xerces Parser For COM'
   	{
  -		CLSID = s '{988AE1AE-12FF-4c11-8847-BDD79C1B6B59}'
  -		CurVer = s 'Xerces.DOMDocument.1.3'
  +		CLSID = s '{C4775B61-ECD6-11d4-94B4-00A0CC57CBCB}'
  +		CurVer = s 'Xerces.DOMDocument.1.4'
   	}
   	NoRemove CLSID
   	{
  -		ForceRemove = '{988AE1AE-12FF-4c11-8847-BDD79C1B6B59}' = s 'Apache Xerces Parser for COM'
  +		ForceRemove = '{C4775B61-ECD6-11d4-94B4-00A0CC57CBCB}' = s 'Apache Xerces Parser for COM'
   		{
  -			ProgID = s 'Xerces.DOMDocument.1.3'
  +			ProgID = s 'Xerces.DOMDocument.1.4'
   			VersionIndependentProgID = s 'Xerces.DOMDocument'
   			ForceRemove 'Programmable'
   			InprocServer32 = s '%XMLMODULE%'
   			{
   				val ThreadingModel = s 'Apartment'
   			}
  -			'TypeLib' = s '{C58E1141-26F6-4d3a-AF76-6214CA435238}'
  +			'TypeLib' = s '{C4775B62-ECD6-11d4-94B4-00A0CC57CBCB}'
   		}
   	}
   }
  
  
  
  1.4       +4 -4      xml-xerces/c/src/com/xmlhttprequest.rgs
  
  Index: xmlhttprequest.rgs
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/com/xmlhttprequest.rgs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- xmlhttprequest.rgs	2000/09/29 23:07:06	1.3
  +++ xmlhttprequest.rgs	2001/01/19 15:18:46	1.4
  @@ -1,26 +1,26 @@
   HKCR
   {
  -	IBMXML.XMLHttpRequest.1.3 = s 'Apache Xerces XML Http Request'
  +	IBMXML.XMLHttpRequest.1.4 = s 'Apache Xerces XML Http Request'
   	{
   		CLSID = s '{3A725053-15FB-4065-9171-BC02BCF3876C}'
   	}
   	IBMXML.XMLHttpRequest = s 'Apache Xerces XML Http Request'
   	{
   		CLSID = s '{3A725053-15FB-4065-9171-BC02BCF3876C}'
  -		CurVer = s 'Xerces.XMLHttpRequest.1.3'
  +		CurVer = s 'Xerces.XMLHttpRequest.1.4'
   	}
   	NoRemove CLSID
   	{
   		ForceRemove {3A725053-15FB-4065-9171-BC02BCF3876C} = s 'Apache Xerces XML Http Request'
   		{
  -			ProgID = s 'Xerces.XMLHttpRequest.1.3'
  +			ProgID = s 'Xerces.XMLHttpRequest.1.4'
   			VersionIndependentProgID = s 'Xerces.XMLHttpRequest'
   			ForceRemove 'Programmable'
   			InprocServer32 = s '%XMLMODULE%'
   			{
   				val ThreadingModel = s 'Apartment'
   			}
  -			'TypeLib' = s '{C58E1141-26F6-4d3a-AF76-6214CA435238}'
  +			'TypeLib' = s '{C4775B62-ECD6-11d4-94B4-00A0CC57CBCB}'
   		}
   	}
   }
  
  
  
  1.1                  xml-xerces/c/src/com/xml4com.h
  
  Index: xml4com.h
  ===================================================================
  
  #pragma warning( disable: 4049 )  /* more than 64k source lines */
  
  /* this ALWAYS GENERATED file contains the definitions for the interfaces */
  
  
   /* File created by MIDL compiler version 5.03.0280 */
  /* at Thu Jan 18 00:48:45 2001
   */
  /* Compiler settings for C:\xml-xerces\c\src\com\xml4com.idl:
      Os (OptLev=s), W1, Zp8, env=Win32 (32b run), ms_ext, c_ext
      error checks: allocation ref bounds_check enum stub_data 
      VC __declspec() decoration level: 
           __declspec(uuid()), __declspec(selectany), __declspec(novtable)
           DECLSPEC_UUID(), MIDL_INTERFACE()
  */
  //@@MIDL_FILE_HEADING(  )
  
  
  /* verify that the <rpcndr.h> version is high enough to compile this file*/
  #ifndef __REQUIRED_RPCNDR_H_VERSION__
  #define __REQUIRED_RPCNDR_H_VERSION__ 440
  #endif
  
  #include "rpc.h"
  #include "rpcndr.h"
  
  #ifndef __xml4com_h__
  #define __xml4com_h__
  
  /* Forward Declarations */ 
  
  #ifndef __IIBMXMLDOMNodeIdentity_FWD_DEFINED__
  #define __IIBMXMLDOMNodeIdentity_FWD_DEFINED__
  typedef interface IIBMXMLDOMNodeIdentity IIBMXMLDOMNodeIdentity;
  #endif 	/* __IIBMXMLDOMNodeIdentity_FWD_DEFINED__ */
  
  
  #ifndef __DOMDocument_FWD_DEFINED__
  #define __DOMDocument_FWD_DEFINED__
  
  #ifdef __cplusplus
  typedef class DOMDocument DOMDocument;
  #else
  typedef struct DOMDocument DOMDocument;
  #endif /* __cplusplus */
  
  #endif 	/* __DOMDocument_FWD_DEFINED__ */
  
  
  #ifndef __XMLHTTPRequest_FWD_DEFINED__
  #define __XMLHTTPRequest_FWD_DEFINED__
  
  #ifdef __cplusplus
  typedef class XMLHTTPRequest XMLHTTPRequest;
  #else
  typedef struct XMLHTTPRequest XMLHTTPRequest;
  #endif /* __cplusplus */
  
  #endif 	/* __XMLHTTPRequest_FWD_DEFINED__ */
  
  
  /* header files for imported files */
  #include "oaidl.h"
  
  #ifdef __cplusplus
  extern "C"{
  #endif 
  
  void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
  void __RPC_USER MIDL_user_free( void __RPC_FAR * ); 
  
  
  #ifndef __Xerces_LIBRARY_DEFINED__
  #define __Xerces_LIBRARY_DEFINED__
  
  /* library Xerces */
  /* [helpstring][version][uuid] */ 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  EXTERN_C const IID LIBID_Xerces;
  
  #ifndef __IIBMXMLDOMNodeIdentity_INTERFACE_DEFINED__
  #define __IIBMXMLDOMNodeIdentity_INTERFACE_DEFINED__
  
  /* interface IIBMXMLDOMNodeIdentity */
  /* [unique][helpstring][oleautomation][hidden][uuid][object] */ 
  
  
  EXTERN_C const IID IID_IIBMXMLDOMNodeIdentity;
  
  #if defined(__cplusplus) && !defined(CINTERFACE)
      
      MIDL_INTERFACE("35ADBB42-47B2-4b22-9D2E-1DA260EE5007")
      IIBMXMLDOMNodeIdentity : public IUnknown
      {
      public:
          virtual /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE get_NodeId( 
              /* [retval][out] */ long __RPC_FAR *pVal) = 0;
          
      };
      
  #else 	/* C style interface */
  
      typedef struct IIBMXMLDOMNodeIdentityVtbl
      {
          BEGIN_INTERFACE
          
          HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
              IIBMXMLDOMNodeIdentity __RPC_FAR * This,
              /* [in] */ REFIID riid,
              /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
          
          ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
              IIBMXMLDOMNodeIdentity __RPC_FAR * This);
          
          ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( 
              IIBMXMLDOMNodeIdentity __RPC_FAR * This);
          
          /* [helpstring][propget] */ HRESULT ( STDMETHODCALLTYPE __RPC_FAR *get_NodeId )( 
              IIBMXMLDOMNodeIdentity __RPC_FAR * This,
              /* [retval][out] */ long __RPC_FAR *pVal);
          
          END_INTERFACE
      } IIBMXMLDOMNodeIdentityVtbl;
  
      interface IIBMXMLDOMNodeIdentity
      {
          CONST_VTBL struct IIBMXMLDOMNodeIdentityVtbl __RPC_FAR *lpVtbl;
      };
  
      
  
  #ifdef COBJMACROS
  
  
  #define IIBMXMLDOMNodeIdentity_QueryInterface(This,riid,ppvObject)	\
      (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)
  
  #define IIBMXMLDOMNodeIdentity_AddRef(This)	\
      (This)->lpVtbl -> AddRef(This)
  
  #define IIBMXMLDOMNodeIdentity_Release(This)	\
      (This)->lpVtbl -> Release(This)
  
  
  #define IIBMXMLDOMNodeIdentity_get_NodeId(This,pVal)	\
      (This)->lpVtbl -> get_NodeId(This,pVal)
  
  #endif /* COBJMACROS */
  
  
  #endif 	/* C style interface */
  
  
  
  /* [helpstring][propget] */ HRESULT STDMETHODCALLTYPE IIBMXMLDOMNodeIdentity_get_NodeId_Proxy( 
      IIBMXMLDOMNodeIdentity __RPC_FAR * This,
      /* [retval][out] */ long __RPC_FAR *pVal);
  
  
  void __RPC_STUB IIBMXMLDOMNodeIdentity_get_NodeId_Stub(
      IRpcStubBuffer *This,
      IRpcChannelBuffer *_pRpcChannelBuffer,
      PRPC_MESSAGE _pRpcMessage,
      DWORD *_pdwStubPhase);
  
  
  
  #endif 	/* __IIBMXMLDOMNodeIdentity_INTERFACE_DEFINED__ */
  
  
  EXTERN_C const CLSID CLSID_DOMDocument;
  
  #ifdef __cplusplus
  
  class DECLSPEC_UUID("C4775B61-ECD6-11d4-94B4-00A0CC57CBCB")
  DOMDocument;
  #endif
  
  EXTERN_C const CLSID CLSID_XMLHTTPRequest;
  
  #ifdef __cplusplus
  
  class DECLSPEC_UUID("3A725053-15FB-4065-9171-BC02BCF3876C")
  XMLHTTPRequest;
  #endif
  #endif /* __Xerces_LIBRARY_DEFINED__ */
  
  /* Additional Prototypes for ALL interfaces */
  
  /* end of Additional Prototypes */
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif
  
  
  
  
  
  1.1                  xml-xerces/c/src/com/xml4com_i.c
  
  Index: xml4com_i.c
  ===================================================================
  
  #pragma warning( disable: 4049 )  /* more than 64k source lines */
  
  /* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
  
  /* link this file in with the server and any clients */
  
  
   /* File created by MIDL compiler version 5.03.0280 */
  /* at Thu Jan 18 00:48:45 2001
   */
  /* Compiler settings for C:\xml-xerces\c\src\com\xml4com.idl:
      Os (OptLev=s), W1, Zp8, env=Win32 (32b run), ms_ext, c_ext
      error checks: allocation ref bounds_check enum stub_data 
      VC __declspec() decoration level: 
           __declspec(uuid()), __declspec(selectany), __declspec(novtable)
           DECLSPEC_UUID(), MIDL_INTERFACE()
  */
  //@@MIDL_FILE_HEADING(  )
  
  #if !defined(_M_IA64) && !defined(_M_AXP64)
  
  #ifdef __cplusplus
  extern "C"{
  #endif 
  
  
  #include <rpc.h>
  #include <rpcndr.h>
  
  #ifdef _MIDL_USE_GUIDDEF_
  
  #ifndef INITGUID
  #define INITGUID
  #include <guiddef.h>
  #undef INITGUID
  #else
  #include <guiddef.h>
  #endif
  
  #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
          DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
  
  #else // !_MIDL_USE_GUIDDEF_
  
  #ifndef __IID_DEFINED__
  #define __IID_DEFINED__
  
  typedef struct _IID
  {
      unsigned long x;
      unsigned short s1;
      unsigned short s2;
      unsigned char  c[8];
  } IID;
  
  #endif // __IID_DEFINED__
  
  #ifndef CLSID_DEFINED
  #define CLSID_DEFINED
  typedef IID CLSID;
  #endif // CLSID_DEFINED
  
  #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
          const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
  
  #endif !_MIDL_USE_GUIDDEF_
  
  MIDL_DEFINE_GUID(IID, LIBID_Xerces,0xC4775B62,0xECD6,0x11d4,0x94,0xB4,0x00,0xA0,0xCC,0x57,0xCB,0xCB);
  
  
  MIDL_DEFINE_GUID(IID, IID_IIBMXMLDOMNodeIdentity,0x35ADBB42,0x47B2,0x4b22,0x9D,0x2E,0x1D,0xA2,0x60,0xEE,0x50,0x07);
  
  
  MIDL_DEFINE_GUID(CLSID, CLSID_DOMDocument,0xC4775B61,0xECD6,0x11d4,0x94,0xB4,0x00,0xA0,0xCC,0x57,0xCB,0xCB);
  
  
  MIDL_DEFINE_GUID(CLSID, CLSID_XMLHTTPRequest,0x3A725053,0x15FB,0x4065,0x91,0x71,0xBC,0x02,0xBC,0xF3,0x87,0x6C);
  
  #undef MIDL_DEFINE_GUID
  
  #ifdef __cplusplus
  }
  #endif
  
  
  
  #endif /* !defined(_M_IA64) && !defined(_M_AXP64)*/
  
  
  #pragma warning( disable: 4049 )  /* more than 64k source lines */
  
  /* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
  
  /* link this file in with the server and any clients */
  
  
   /* File created by MIDL compiler version 5.03.0280 */
  /* at Thu Jan 18 00:48:45 2001
   */
  /* Compiler settings for C:\xml-xerces\c\src\com\xml4com.idl:
      Oicf (OptLev=i2), W1, Zp8, env=Win64 (32b run,appending), ms_ext, c_ext, robust
      error checks: allocation ref bounds_check enum stub_data 
      VC __declspec() decoration level: 
           __declspec(uuid()), __declspec(selectany), __declspec(novtable)
           DECLSPEC_UUID(), MIDL_INTERFACE()
  */
  //@@MIDL_FILE_HEADING(  )
  
  #if defined(_M_IA64) || defined(_M_AXP64)
  
  #ifdef __cplusplus
  extern "C"{
  #endif 
  
  
  #include <rpc.h>
  #include <rpcndr.h>
  
  #ifdef _MIDL_USE_GUIDDEF_
  
  #ifndef INITGUID
  #define INITGUID
  #include <guiddef.h>
  #undef INITGUID
  #else
  #include <guiddef.h>
  #endif
  
  #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
          DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
  
  #else // !_MIDL_USE_GUIDDEF_
  
  #ifndef __IID_DEFINED__
  #define __IID_DEFINED__
  
  typedef struct _IID
  {
      unsigned long x;
      unsigned short s1;
      unsigned short s2;
      unsigned char  c[8];
  } IID;
  
  #endif // __IID_DEFINED__
  
  #ifndef CLSID_DEFINED
  #define CLSID_DEFINED
  typedef IID CLSID;
  #endif // CLSID_DEFINED
  
  #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
          const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
  
  #endif !_MIDL_USE_GUIDDEF_
  
  MIDL_DEFINE_GUID(IID, LIBID_Xerces,0xC4775B62,0xECD6,0x11d4,0x94,0xB4,0x00,0xA0,0xCC,0x57,0xCB,0xCB);
  
  
  MIDL_DEFINE_GUID(IID, IID_IIBMXMLDOMNodeIdentity,0x35ADBB42,0x47B2,0x4b22,0x9D,0x2E,0x1D,0xA2,0x60,0xEE,0x50,0x07);
  
  
  MIDL_DEFINE_GUID(CLSID, CLSID_DOMDocument,0xC4775B61,0xECD6,0x11d4,0x94,0xB4,0x00,0xA0,0xCC,0x57,0xCB,0xCB);
  
  
  MIDL_DEFINE_GUID(CLSID, CLSID_XMLHTTPRequest,0x3A725053,0x15FB,0x4065,0x91,0x71,0xBC,0x02,0xBC,0xF3,0x87,0x6C);
  
  #undef MIDL_DEFINE_GUID
  
  #ifdef __cplusplus
  }
  #endif
  
  
  
  #endif /* defined(_M_IA64) || defined(_M_AXP64)*/