Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenpi.c
Go to the documentation of this file.
00001 /* 00002 * DOM processing instruction node implementation 00003 * 00004 * Copyright 2006 Huw Davies 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2.1 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 00019 */ 00020 00021 #define COBJMACROS 00022 00023 #include "config.h" 00024 00025 #include <stdarg.h> 00026 #include "windef.h" 00027 #include "winbase.h" 00028 #include "winuser.h" 00029 #include "ole2.h" 00030 #include "msxml2.h" 00031 00032 #include "msxml_private.h" 00033 00034 #include "wine/debug.h" 00035 00036 WINE_DEFAULT_DEBUG_CHANNEL(msxml); 00037 00038 #ifdef HAVE_LIBXML2 00039 00040 typedef struct _dom_pi 00041 { 00042 xmlnode node; 00043 const struct IXMLDOMProcessingInstructionVtbl *lpVtbl; 00044 LONG ref; 00045 } dom_pi; 00046 00047 static inline dom_pi *impl_from_IXMLDOMProcessingInstruction( IXMLDOMProcessingInstruction *iface ) 00048 { 00049 return (dom_pi *)((char*)iface - FIELD_OFFSET(dom_pi, lpVtbl)); 00050 } 00051 00052 static HRESULT WINAPI dom_pi_QueryInterface( 00053 IXMLDOMProcessingInstruction *iface, 00054 REFIID riid, 00055 void** ppvObject ) 00056 { 00057 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00058 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppvObject); 00059 00060 if ( IsEqualGUID( riid, &IID_IXMLDOMProcessingInstruction ) || 00061 IsEqualGUID( riid, &IID_IDispatch ) || 00062 IsEqualGUID( riid, &IID_IUnknown ) ) 00063 { 00064 *ppvObject = iface; 00065 } 00066 else if ( IsEqualGUID( riid, &IID_IXMLDOMNode ) ) 00067 { 00068 *ppvObject = IXMLDOMNode_from_impl(&This->node); 00069 } 00070 else 00071 { 00072 FIXME("Unsupported interface %s\n", debugstr_guid(riid)); 00073 return E_NOINTERFACE; 00074 } 00075 00076 IUnknown_AddRef((IUnknown*)*ppvObject); 00077 return S_OK; 00078 } 00079 00080 static ULONG WINAPI dom_pi_AddRef( 00081 IXMLDOMProcessingInstruction *iface ) 00082 { 00083 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00084 return InterlockedIncrement( &This->ref ); 00085 } 00086 00087 static ULONG WINAPI dom_pi_Release( 00088 IXMLDOMProcessingInstruction *iface ) 00089 { 00090 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00091 ULONG ref; 00092 00093 ref = InterlockedDecrement( &This->ref ); 00094 if ( ref == 0 ) 00095 { 00096 destroy_xmlnode(&This->node); 00097 heap_free( This ); 00098 } 00099 00100 return ref; 00101 } 00102 00103 static HRESULT WINAPI dom_pi_GetTypeInfoCount( 00104 IXMLDOMProcessingInstruction *iface, 00105 UINT* pctinfo ) 00106 { 00107 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00108 00109 TRACE("(%p)->(%p)\n", This, pctinfo); 00110 00111 *pctinfo = 1; 00112 00113 return S_OK; 00114 } 00115 00116 static HRESULT WINAPI dom_pi_GetTypeInfo( 00117 IXMLDOMProcessingInstruction *iface, 00118 UINT iTInfo, LCID lcid, 00119 ITypeInfo** ppTInfo ) 00120 { 00121 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00122 HRESULT hr; 00123 00124 TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo); 00125 00126 hr = get_typeinfo(IXMLDOMProcessingInstruction_tid, ppTInfo); 00127 00128 return hr; 00129 } 00130 00131 static HRESULT WINAPI dom_pi_GetIDsOfNames( 00132 IXMLDOMProcessingInstruction *iface, 00133 REFIID riid, LPOLESTR* rgszNames, 00134 UINT cNames, LCID lcid, DISPID* rgDispId ) 00135 { 00136 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00137 ITypeInfo *typeinfo; 00138 HRESULT hr; 00139 00140 TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames, 00141 lcid, rgDispId); 00142 00143 if(!rgszNames || cNames == 0 || !rgDispId) 00144 return E_INVALIDARG; 00145 00146 hr = get_typeinfo(IXMLDOMProcessingInstruction_tid, &typeinfo); 00147 if(SUCCEEDED(hr)) 00148 { 00149 hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId); 00150 ITypeInfo_Release(typeinfo); 00151 } 00152 00153 return hr; 00154 } 00155 00156 static HRESULT WINAPI dom_pi_Invoke( 00157 IXMLDOMProcessingInstruction *iface, 00158 DISPID dispIdMember, REFIID riid, LCID lcid, 00159 WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, 00160 EXCEPINFO* pExcepInfo, UINT* puArgErr ) 00161 { 00162 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00163 ITypeInfo *typeinfo; 00164 HRESULT hr; 00165 00166 TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), 00167 lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); 00168 00169 hr = get_typeinfo(IXMLDOMProcessingInstruction_tid, &typeinfo); 00170 if(SUCCEEDED(hr)) 00171 { 00172 hr = ITypeInfo_Invoke(typeinfo, &(This->lpVtbl), dispIdMember, wFlags, pDispParams, 00173 pVarResult, pExcepInfo, puArgErr); 00174 ITypeInfo_Release(typeinfo); 00175 } 00176 00177 return hr; 00178 } 00179 00180 static HRESULT WINAPI dom_pi_get_nodeName( 00181 IXMLDOMProcessingInstruction *iface, 00182 BSTR* p ) 00183 { 00184 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00185 return IXMLDOMNode_get_nodeName( IXMLDOMNode_from_impl(&This->node), p ); 00186 } 00187 00188 static HRESULT WINAPI dom_pi_get_nodeValue( 00189 IXMLDOMProcessingInstruction *iface, 00190 VARIANT* var1 ) 00191 { 00192 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00193 return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 ); 00194 } 00195 00196 static HRESULT WINAPI dom_pi_put_nodeValue( 00197 IXMLDOMProcessingInstruction *iface, 00198 VARIANT var1 ) 00199 { 00200 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00201 BSTR sTarget; 00202 static const WCHAR szXML[] = {'x','m','l',0}; 00203 HRESULT hr; 00204 00205 TRACE("%p\n", This ); 00206 00207 /* Cannot set data to a PI node whose target is 'xml' */ 00208 hr = dom_pi_get_nodeName(iface, &sTarget); 00209 if(hr == S_OK) 00210 { 00211 if(lstrcmpW( sTarget, szXML) == 0) 00212 { 00213 SysFreeString(sTarget); 00214 return E_FAIL; 00215 } 00216 00217 SysFreeString(sTarget); 00218 } 00219 00220 return IXMLDOMNode_put_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 ); 00221 } 00222 00223 static HRESULT WINAPI dom_pi_get_nodeType( 00224 IXMLDOMProcessingInstruction *iface, 00225 DOMNodeType* domNodeType ) 00226 { 00227 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00228 return IXMLDOMNode_get_nodeType( IXMLDOMNode_from_impl(&This->node), domNodeType ); 00229 } 00230 00231 static HRESULT WINAPI dom_pi_get_parentNode( 00232 IXMLDOMProcessingInstruction *iface, 00233 IXMLDOMNode** parent ) 00234 { 00235 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00236 return IXMLDOMNode_get_parentNode( IXMLDOMNode_from_impl(&This->node), parent ); 00237 } 00238 00239 static HRESULT WINAPI dom_pi_get_childNodes( 00240 IXMLDOMProcessingInstruction *iface, 00241 IXMLDOMNodeList** outList) 00242 { 00243 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00244 return IXMLDOMNode_get_childNodes( IXMLDOMNode_from_impl(&This->node), outList ); 00245 } 00246 00247 static HRESULT WINAPI dom_pi_get_firstChild( 00248 IXMLDOMProcessingInstruction *iface, 00249 IXMLDOMNode** domNode) 00250 { 00251 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00252 return IXMLDOMNode_get_firstChild( IXMLDOMNode_from_impl(&This->node), domNode ); 00253 } 00254 00255 static HRESULT WINAPI dom_pi_get_lastChild( 00256 IXMLDOMProcessingInstruction *iface, 00257 IXMLDOMNode** domNode) 00258 { 00259 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00260 return IXMLDOMNode_get_lastChild( IXMLDOMNode_from_impl(&This->node), domNode ); 00261 } 00262 00263 static HRESULT WINAPI dom_pi_get_previousSibling( 00264 IXMLDOMProcessingInstruction *iface, 00265 IXMLDOMNode** domNode) 00266 { 00267 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00268 return IXMLDOMNode_get_previousSibling( IXMLDOMNode_from_impl(&This->node), domNode ); 00269 } 00270 00271 static HRESULT WINAPI dom_pi_get_nextSibling( 00272 IXMLDOMProcessingInstruction *iface, 00273 IXMLDOMNode** domNode) 00274 { 00275 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00276 return IXMLDOMNode_get_nextSibling( IXMLDOMNode_from_impl(&This->node), domNode ); 00277 } 00278 00279 static HRESULT WINAPI dom_pi_get_attributes( 00280 IXMLDOMProcessingInstruction *iface, 00281 IXMLDOMNamedNodeMap** attributeMap) 00282 { 00283 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00284 return IXMLDOMNode_get_attributes( IXMLDOMNode_from_impl(&This->node), attributeMap ); 00285 } 00286 00287 static HRESULT WINAPI dom_pi_insertBefore( 00288 IXMLDOMProcessingInstruction *iface, 00289 IXMLDOMNode* newNode, VARIANT var1, 00290 IXMLDOMNode** outOldNode) 00291 { 00292 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00293 return IXMLDOMNode_insertBefore( IXMLDOMNode_from_impl(&This->node), newNode, var1, outOldNode ); 00294 } 00295 00296 static HRESULT WINAPI dom_pi_replaceChild( 00297 IXMLDOMProcessingInstruction *iface, 00298 IXMLDOMNode* newNode, 00299 IXMLDOMNode* oldNode, 00300 IXMLDOMNode** outOldNode) 00301 { 00302 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00303 return IXMLDOMNode_replaceChild( IXMLDOMNode_from_impl(&This->node), newNode, oldNode, outOldNode ); 00304 } 00305 00306 static HRESULT WINAPI dom_pi_removeChild( 00307 IXMLDOMProcessingInstruction *iface, 00308 IXMLDOMNode* domNode, IXMLDOMNode** oldNode) 00309 { 00310 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00311 return IXMLDOMNode_removeChild( IXMLDOMNode_from_impl(&This->node), domNode, oldNode ); 00312 } 00313 00314 static HRESULT WINAPI dom_pi_appendChild( 00315 IXMLDOMProcessingInstruction *iface, 00316 IXMLDOMNode* newNode, IXMLDOMNode** outNewNode) 00317 { 00318 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00319 return IXMLDOMNode_appendChild( IXMLDOMNode_from_impl(&This->node), newNode, outNewNode ); 00320 } 00321 00322 static HRESULT WINAPI dom_pi_hasChildNodes( 00323 IXMLDOMProcessingInstruction *iface, 00324 VARIANT_BOOL* pbool) 00325 { 00326 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00327 return IXMLDOMNode_hasChildNodes( IXMLDOMNode_from_impl(&This->node), pbool ); 00328 } 00329 00330 static HRESULT WINAPI dom_pi_get_ownerDocument( 00331 IXMLDOMProcessingInstruction *iface, 00332 IXMLDOMDocument** domDocument) 00333 { 00334 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00335 return IXMLDOMNode_get_ownerDocument( IXMLDOMNode_from_impl(&This->node), domDocument ); 00336 } 00337 00338 static HRESULT WINAPI dom_pi_cloneNode( 00339 IXMLDOMProcessingInstruction *iface, 00340 VARIANT_BOOL pbool, IXMLDOMNode** outNode) 00341 { 00342 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00343 return IXMLDOMNode_cloneNode( IXMLDOMNode_from_impl(&This->node), pbool, outNode ); 00344 } 00345 00346 static HRESULT WINAPI dom_pi_get_nodeTypeString( 00347 IXMLDOMProcessingInstruction *iface, 00348 BSTR* p) 00349 { 00350 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00351 return IXMLDOMNode_get_nodeTypeString( IXMLDOMNode_from_impl(&This->node), p ); 00352 } 00353 00354 static HRESULT WINAPI dom_pi_get_text( 00355 IXMLDOMProcessingInstruction *iface, 00356 BSTR* p) 00357 { 00358 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00359 return IXMLDOMNode_get_text( IXMLDOMNode_from_impl(&This->node), p ); 00360 } 00361 00362 static HRESULT WINAPI dom_pi_put_text( 00363 IXMLDOMProcessingInstruction *iface, 00364 BSTR p) 00365 { 00366 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00367 return IXMLDOMNode_put_text( IXMLDOMNode_from_impl(&This->node), p ); 00368 } 00369 00370 static HRESULT WINAPI dom_pi_get_specified( 00371 IXMLDOMProcessingInstruction *iface, 00372 VARIANT_BOOL* pbool) 00373 { 00374 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00375 return IXMLDOMNode_get_specified( IXMLDOMNode_from_impl(&This->node), pbool ); 00376 } 00377 00378 static HRESULT WINAPI dom_pi_get_definition( 00379 IXMLDOMProcessingInstruction *iface, 00380 IXMLDOMNode** domNode) 00381 { 00382 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00383 return IXMLDOMNode_get_definition( IXMLDOMNode_from_impl(&This->node), domNode ); 00384 } 00385 00386 static HRESULT WINAPI dom_pi_get_nodeTypedValue( 00387 IXMLDOMProcessingInstruction *iface, 00388 VARIANT* var1) 00389 { 00390 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00391 return IXMLDOMNode_get_nodeTypedValue( IXMLDOMNode_from_impl(&This->node), var1 ); 00392 } 00393 00394 static HRESULT WINAPI dom_pi_put_nodeTypedValue( 00395 IXMLDOMProcessingInstruction *iface, 00396 VARIANT var1) 00397 { 00398 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00399 return IXMLDOMNode_put_nodeTypedValue( IXMLDOMNode_from_impl(&This->node), var1 ); 00400 } 00401 00402 static HRESULT WINAPI dom_pi_get_dataType( 00403 IXMLDOMProcessingInstruction *iface, 00404 VARIANT* var1) 00405 { 00406 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00407 return IXMLDOMNode_get_dataType( IXMLDOMNode_from_impl(&This->node), var1 ); 00408 } 00409 00410 static HRESULT WINAPI dom_pi_put_dataType( 00411 IXMLDOMProcessingInstruction *iface, 00412 BSTR p) 00413 { 00414 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00415 return IXMLDOMNode_put_dataType( IXMLDOMNode_from_impl(&This->node), p ); 00416 } 00417 00418 static HRESULT WINAPI dom_pi_get_xml( 00419 IXMLDOMProcessingInstruction *iface, 00420 BSTR* p) 00421 { 00422 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00423 return IXMLDOMNode_get_xml( IXMLDOMNode_from_impl(&This->node), p ); 00424 } 00425 00426 static HRESULT WINAPI dom_pi_transformNode( 00427 IXMLDOMProcessingInstruction *iface, 00428 IXMLDOMNode* domNode, BSTR* p) 00429 { 00430 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00431 return IXMLDOMNode_transformNode( IXMLDOMNode_from_impl(&This->node), domNode, p ); 00432 } 00433 00434 static HRESULT WINAPI dom_pi_selectNodes( 00435 IXMLDOMProcessingInstruction *iface, 00436 BSTR p, IXMLDOMNodeList** outList) 00437 { 00438 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00439 return IXMLDOMNode_selectNodes( IXMLDOMNode_from_impl(&This->node), p, outList ); 00440 } 00441 00442 static HRESULT WINAPI dom_pi_selectSingleNode( 00443 IXMLDOMProcessingInstruction *iface, 00444 BSTR p, IXMLDOMNode** outNode) 00445 { 00446 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00447 return IXMLDOMNode_selectSingleNode( IXMLDOMNode_from_impl(&This->node), p, outNode ); 00448 } 00449 00450 static HRESULT WINAPI dom_pi_get_parsed( 00451 IXMLDOMProcessingInstruction *iface, 00452 VARIANT_BOOL* pbool) 00453 { 00454 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00455 return IXMLDOMNode_get_parsed( IXMLDOMNode_from_impl(&This->node), pbool ); 00456 } 00457 00458 static HRESULT WINAPI dom_pi_get_namespaceURI( 00459 IXMLDOMProcessingInstruction *iface, 00460 BSTR* p) 00461 { 00462 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00463 return IXMLDOMNode_get_namespaceURI( IXMLDOMNode_from_impl(&This->node), p ); 00464 } 00465 00466 static HRESULT WINAPI dom_pi_get_prefix( 00467 IXMLDOMProcessingInstruction *iface, 00468 BSTR* p) 00469 { 00470 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00471 return IXMLDOMNode_get_prefix( IXMLDOMNode_from_impl(&This->node), p ); 00472 } 00473 00474 static HRESULT WINAPI dom_pi_get_baseName( 00475 IXMLDOMProcessingInstruction *iface, 00476 BSTR* p) 00477 { 00478 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00479 return IXMLDOMNode_get_baseName( IXMLDOMNode_from_impl(&This->node), p ); 00480 } 00481 00482 static HRESULT WINAPI dom_pi_transformNodeToObject( 00483 IXMLDOMProcessingInstruction *iface, 00484 IXMLDOMNode* domNode, VARIANT var1) 00485 { 00486 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00487 return IXMLDOMNode_transformNodeToObject( IXMLDOMNode_from_impl(&This->node), domNode, var1 ); 00488 } 00489 00490 static HRESULT WINAPI dom_pi_get_target( 00491 IXMLDOMProcessingInstruction *iface, 00492 BSTR *p) 00493 { 00494 /* target returns the same value as nodeName property */ 00495 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00496 return IXMLDOMNode_get_nodeName( IXMLDOMNode_from_impl(&This->node), p ); 00497 } 00498 00499 static HRESULT WINAPI dom_pi_get_data( 00500 IXMLDOMProcessingInstruction *iface, 00501 BSTR *p) 00502 { 00503 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00504 HRESULT hr = E_FAIL; 00505 VARIANT vRet; 00506 00507 if(!p) 00508 return E_INVALIDARG; 00509 00510 hr = IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), &vRet ); 00511 if(hr == S_OK) 00512 { 00513 *p = V_BSTR(&vRet); 00514 } 00515 00516 return hr; 00517 } 00518 00519 static HRESULT WINAPI dom_pi_put_data( 00520 IXMLDOMProcessingInstruction *iface, 00521 BSTR data) 00522 { 00523 dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); 00524 HRESULT hr = E_FAIL; 00525 VARIANT val; 00526 BSTR sTarget; 00527 static const WCHAR szXML[] = {'x','m','l',0}; 00528 00529 TRACE("(%p)->(%s)\n", This, debugstr_w(data) ); 00530 00531 /* Cannot set data to a PI node whose target is 'xml' */ 00532 hr = dom_pi_get_nodeName(iface, &sTarget); 00533 if(hr == S_OK) 00534 { 00535 if(lstrcmpW( sTarget, szXML) == 0) 00536 { 00537 SysFreeString(sTarget); 00538 return E_FAIL; 00539 } 00540 00541 SysFreeString(sTarget); 00542 } 00543 00544 V_VT(&val) = VT_BSTR; 00545 V_BSTR(&val) = data; 00546 00547 hr = IXMLDOMNode_put_nodeValue( IXMLDOMNode_from_impl(&This->node), val ); 00548 00549 return hr; 00550 } 00551 00552 static const struct IXMLDOMProcessingInstructionVtbl dom_pi_vtbl = 00553 { 00554 dom_pi_QueryInterface, 00555 dom_pi_AddRef, 00556 dom_pi_Release, 00557 dom_pi_GetTypeInfoCount, 00558 dom_pi_GetTypeInfo, 00559 dom_pi_GetIDsOfNames, 00560 dom_pi_Invoke, 00561 dom_pi_get_nodeName, 00562 dom_pi_get_nodeValue, 00563 dom_pi_put_nodeValue, 00564 dom_pi_get_nodeType, 00565 dom_pi_get_parentNode, 00566 dom_pi_get_childNodes, 00567 dom_pi_get_firstChild, 00568 dom_pi_get_lastChild, 00569 dom_pi_get_previousSibling, 00570 dom_pi_get_nextSibling, 00571 dom_pi_get_attributes, 00572 dom_pi_insertBefore, 00573 dom_pi_replaceChild, 00574 dom_pi_removeChild, 00575 dom_pi_appendChild, 00576 dom_pi_hasChildNodes, 00577 dom_pi_get_ownerDocument, 00578 dom_pi_cloneNode, 00579 dom_pi_get_nodeTypeString, 00580 dom_pi_get_text, 00581 dom_pi_put_text, 00582 dom_pi_get_specified, 00583 dom_pi_get_definition, 00584 dom_pi_get_nodeTypedValue, 00585 dom_pi_put_nodeTypedValue, 00586 dom_pi_get_dataType, 00587 dom_pi_put_dataType, 00588 dom_pi_get_xml, 00589 dom_pi_transformNode, 00590 dom_pi_selectNodes, 00591 dom_pi_selectSingleNode, 00592 dom_pi_get_parsed, 00593 dom_pi_get_namespaceURI, 00594 dom_pi_get_prefix, 00595 dom_pi_get_baseName, 00596 dom_pi_transformNodeToObject, 00597 00598 dom_pi_get_target, 00599 dom_pi_get_data, 00600 dom_pi_put_data 00601 }; 00602 00603 IUnknown* create_pi( xmlNodePtr pi ) 00604 { 00605 dom_pi *This; 00606 00607 This = heap_alloc( sizeof *This ); 00608 if ( !This ) 00609 return NULL; 00610 00611 This->lpVtbl = &dom_pi_vtbl; 00612 This->ref = 1; 00613 00614 init_xmlnode(&This->node, pi, (IUnknown*)&This->lpVtbl, NULL); 00615 00616 return (IUnknown*) &This->lpVtbl; 00617 } 00618 00619 #endif Generated on Fri May 25 2012 04:23:28 for ReactOS by
1.7.6.1
|