Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 #ifndef ___ixmldomcharacterdataimpl_h___
00023 #define ___ixmldomcharacterdataimpl_h___
00024 
00025 #include "IXMLDOMNodeImpl.h"
00026 XERCES_CPP_NAMESPACE_USE
00027 
00028 template <class T, const IID* piid, class tihclass = CComTypeInfoHolder>
00029 class ATL_NO_VTABLE IXMLDOMCharacterDataImpl: public IXMLDOMNodeImpl<T,piid,tihclass>
00030 {
00031 public:
00032 
00033         virtual DOMCharacterData* get_DOMCharacterData() = 0; 
00034         virtual DOMNode* get_DOMNode() { return get_DOMCharacterData(); } 
00035 
00036         
00037 
00038 STDMETHOD(get_data)(BSTR  *pVal)
00039 {
00040         ATLTRACE(_T("IXMLDOMCharacterDataImpl::get_data\n"));
00041 
00042         if (NULL == pVal)
00043                 return E_POINTER;
00044 
00045         *pVal = NULL;
00046         
00047         try
00048         {
00049                 *pVal = SysAllocString(get_DOMCharacterData()->getData());
00050         }
00051         catch(...)
00052         {
00053                 return E_FAIL;
00054         }
00055         
00056 
00057         return S_OK;
00058 }
00059 
00060 STDMETHOD(put_data)(BSTR newVal)
00061 {
00062         ATLTRACE(_T("IXMLDOMCharacterDataImpl::put_data\n"));
00063 
00064         try
00065         {
00066                 get_DOMCharacterData()->setData(newVal);
00067         }
00068         catch(...)
00069         {
00070                 return E_FAIL;
00071         }
00072         
00073 
00074         return S_OK;
00075 }
00076 
00077 STDMETHOD(get_length)(long  *pVal)
00078 {
00079         ATLTRACE(_T("IXMLDOMCharacterDataImpl::get_length\n"));
00080 
00081         if (NULL == pVal)
00082                 return E_POINTER;
00083 
00084         *pVal = 0;
00085 
00086         try
00087         {
00088                 *pVal = get_DOMCharacterData()->getLength();
00089         }
00090         catch(...)
00091         {
00092                 return E_FAIL;
00093         }
00094 
00095         return S_OK;
00096 }
00097 
00098 STDMETHOD(substringData)(long offset, long count, BSTR  *data)
00099 {
00100         ATLTRACE(_T("IXMLDOMCharacterDataImpl::substringData\n"));
00101 
00102         if (NULL == data)
00103                 return E_POINTER;
00104 
00105         *data = NULL;
00106 
00107         try
00108         {
00109         *data = SysAllocString(get_DOMCharacterData()->substringData(offset, count));
00110         }
00111         catch(...)
00112         {
00113                 return E_FAIL;
00114         }
00115         
00116         return S_OK;
00117 }
00118 
00119 STDMETHOD(appendData)(BSTR data)
00120 {
00121         ATLTRACE(_T("IXMLDOMCharacterDataImpl::appendData\n"));
00122 
00123         try
00124         {
00125                 get_DOMCharacterData()->appendData(data);
00126         }
00127         catch(...)
00128         {
00129                 return E_FAIL;
00130         }
00131         
00132 
00133         return S_OK;
00134 }
00135 
00136 STDMETHOD(insertData)(long offset, BSTR data)
00137 {
00138         ATLTRACE(_T("IXMLDOMCharacterDataImpl::insertData\n"));
00139 
00140         try
00141         {
00142                 get_DOMCharacterData()->insertData(offset, data);
00143         }
00144         catch(...)
00145         {
00146                 return E_FAIL;
00147         }
00148         
00149 
00150         return S_OK;
00151 }
00152 
00153 STDMETHOD(deleteData)(long offset, long count)
00154 {
00155         ATLTRACE(_T("IXMLDOMCharacterDataImpl::deleteData\n"));
00156 
00157         try
00158         {
00159                 get_DOMCharacterData()->deleteData(offset, count);
00160         }
00161         catch(...)
00162         {
00163                 return E_FAIL;
00164         }
00165         
00166 
00167         return S_OK;
00168 }
00169 
00170 STDMETHOD(replaceData)(long offset, long count, BSTR data)
00171 {
00172         ATLTRACE(_T("IXMLDOMCharacterDataImpl::replaceData\n"));
00173 
00174         try
00175         {
00176                 get_DOMCharacterData()->replaceData(offset, count, data);
00177         }
00178         catch(...)
00179         {
00180                 return E_FAIL;
00181         }
00182         
00183         return S_OK;
00184 }
00185 
00186 };
00187 
00188 #endif // ___ixmldomcharacterdataimpl_h___