ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

pi.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.