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___