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

htmltable.c
Go to the documentation of this file.
00001 /*
00002  * Copyright 2007 Jacek Caban for CodeWeavers
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00017  */
00018 
00019 #include <stdarg.h>
00020 
00021 #define COBJMACROS
00022 
00023 #include "windef.h"
00024 #include "winbase.h"
00025 #include "winuser.h"
00026 #include "ole2.h"
00027 
00028 #include "wine/debug.h"
00029 
00030 #include "mshtml_private.h"
00031 
00032 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
00033 
00034 struct HTMLTable {
00035     HTMLElement element;
00036 
00037     const IHTMLTableVtbl  *lpHTMLTableVtbl;
00038 
00039     ConnectionPoint cp;
00040     nsIDOMHTMLTableElement *nstable;
00041 };
00042 
00043 #define HTMLTABLE(x)  (&(x)->lpHTMLTableVtbl)
00044 
00045 #define HTMLTABLE_THIS(iface) DEFINE_THIS(HTMLTable, HTMLTable, iface)
00046 
00047 static HRESULT WINAPI HTMLTable_QueryInterface(IHTMLTable *iface,
00048                                                          REFIID riid, void **ppv)
00049 {
00050     HTMLTable *This = HTMLTABLE_THIS(iface);
00051 
00052     return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv);
00053 }
00054 
00055 static ULONG WINAPI HTMLTable_AddRef(IHTMLTable *iface)
00056 {
00057     HTMLTable *This = HTMLTABLE_THIS(iface);
00058 
00059     return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->element.node));
00060 }
00061 
00062 static ULONG WINAPI HTMLTable_Release(IHTMLTable *iface)
00063 {
00064     HTMLTable *This = HTMLTABLE_THIS(iface);
00065 
00066     return IHTMLDOMNode_Release(HTMLDOMNODE(&This->element.node));
00067 }
00068 
00069 static HRESULT WINAPI HTMLTable_GetTypeInfoCount(IHTMLTable *iface, UINT *pctinfo)
00070 {
00071     HTMLTable *This = HTMLTABLE_THIS(iface);
00072     return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->element.node.dispex), pctinfo);
00073 }
00074 
00075 static HRESULT WINAPI HTMLTable_GetTypeInfo(IHTMLTable *iface, UINT iTInfo,
00076                                               LCID lcid, ITypeInfo **ppTInfo)
00077 {
00078     HTMLTable *This = HTMLTABLE_THIS(iface);
00079     return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->element.node.dispex), iTInfo, lcid, ppTInfo);
00080 }
00081 
00082 static HRESULT WINAPI HTMLTable_GetIDsOfNames(IHTMLTable *iface, REFIID riid,
00083                                                 LPOLESTR *rgszNames, UINT cNames,
00084                                                 LCID lcid, DISPID *rgDispId)
00085 {
00086     HTMLTable *This = HTMLTABLE_THIS(iface);
00087     return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->element.node.dispex), riid, rgszNames, cNames, lcid, rgDispId);
00088 }
00089 
00090 static HRESULT WINAPI HTMLTable_Invoke(IHTMLTable *iface, DISPID dispIdMember,
00091                             REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
00092                             VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
00093 {
00094     HTMLTable *This = HTMLTABLE_THIS(iface);
00095     return IDispatchEx_Invoke(DISPATCHEX(&This->element.node.dispex), dispIdMember, riid, lcid, wFlags, pDispParams,
00096             pVarResult, pExcepInfo, puArgErr);
00097 }
00098 
00099 static HRESULT WINAPI HTMLTable_put_cols(IHTMLTable *iface, LONG v)
00100 {
00101     HTMLTable *This = HTMLTABLE_THIS(iface);
00102     FIXME("(%p)->(%d)\n", This, v);
00103     return E_NOTIMPL;
00104 }
00105 
00106 static HRESULT WINAPI HTMLTable_get_cols(IHTMLTable *iface, LONG *p)
00107 {
00108     HTMLTable *This = HTMLTABLE_THIS(iface);
00109     FIXME("(%p)->(%p)\n", This, p);
00110     return E_NOTIMPL;
00111 }
00112 
00113 static HRESULT WINAPI HTMLTable_put_border(IHTMLTable *iface, VARIANT v)
00114 {
00115     HTMLTable *This = HTMLTABLE_THIS(iface);
00116     FIXME("(%p)->(v)\n", This);
00117     return E_NOTIMPL;
00118 }
00119 
00120 static HRESULT WINAPI HTMLTable_get_border(IHTMLTable *iface, VARIANT *p)
00121 {
00122     HTMLTable *This = HTMLTABLE_THIS(iface);
00123     FIXME("(%p)->(%p)\n", This, p);
00124     return E_NOTIMPL;
00125 }
00126 
00127 static HRESULT WINAPI HTMLTable_put_frame(IHTMLTable *iface, BSTR v)
00128 {
00129     HTMLTable *This = HTMLTABLE_THIS(iface);
00130     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
00131     return E_NOTIMPL;
00132 }
00133 
00134 static HRESULT WINAPI HTMLTable_get_frame(IHTMLTable *iface, BSTR *p)
00135 {
00136     HTMLTable *This = HTMLTABLE_THIS(iface);
00137     FIXME("(%p)->(%p)\n", This, p);
00138     return E_NOTIMPL;
00139 }
00140 
00141 static HRESULT WINAPI HTMLTable_put_rules(IHTMLTable *iface, BSTR v)
00142 {
00143     HTMLTable *This = HTMLTABLE_THIS(iface);
00144     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
00145     return E_NOTIMPL;
00146 }
00147 
00148 static HRESULT WINAPI HTMLTable_get_rules(IHTMLTable *iface, BSTR *p)
00149 {
00150     HTMLTable *This = HTMLTABLE_THIS(iface);
00151     FIXME("(%p)->(%p)\n", This, p);
00152     return E_NOTIMPL;
00153 }
00154 
00155 static HRESULT WINAPI HTMLTable_put_cellSpacing(IHTMLTable *iface, VARIANT v)
00156 {
00157     HTMLTable *This = HTMLTABLE_THIS(iface);
00158     FIXME("(%p)->(v)\n", This);
00159     return E_NOTIMPL;
00160 }
00161 
00162 static HRESULT WINAPI HTMLTable_get_cellSpacing(IHTMLTable *iface, VARIANT *p)
00163 {
00164     HTMLTable *This = HTMLTABLE_THIS(iface);
00165     FIXME("(%p)->(%p)\n", This, p);
00166     return E_NOTIMPL;
00167 }
00168 
00169 static HRESULT WINAPI HTMLTable_put_cellPadding(IHTMLTable *iface, VARIANT v)
00170 {
00171     HTMLTable *This = HTMLTABLE_THIS(iface);
00172     FIXME("(%p)->(v)\n", This);
00173     return E_NOTIMPL;
00174 }
00175 
00176 static HRESULT WINAPI HTMLTable_get_cellPadding(IHTMLTable *iface, VARIANT *p)
00177 {
00178     HTMLTable *This = HTMLTABLE_THIS(iface);
00179     FIXME("(%p)->(%p)\n", This, p);
00180     return E_NOTIMPL;
00181 }
00182 
00183 static HRESULT WINAPI HTMLTable_put_background(IHTMLTable *iface, BSTR v)
00184 {
00185     HTMLTable *This = HTMLTABLE_THIS(iface);
00186     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
00187     return E_NOTIMPL;
00188 }
00189 
00190 static HRESULT WINAPI HTMLTable_get_background(IHTMLTable *iface, BSTR *p)
00191 {
00192     HTMLTable *This = HTMLTABLE_THIS(iface);
00193     FIXME("(%p)->(%p)\n", This, p);
00194     return E_NOTIMPL;
00195 }
00196 
00197 static HRESULT WINAPI HTMLTable_put_bgColor(IHTMLTable *iface, VARIANT v)
00198 {
00199     HTMLTable *This = HTMLTABLE_THIS(iface);
00200     FIXME("(%p)->(v)\n", This);
00201     return E_NOTIMPL;
00202 }
00203 
00204 static HRESULT WINAPI HTMLTable_get_bgColor(IHTMLTable *iface, VARIANT *p)
00205 {
00206     HTMLTable *This = HTMLTABLE_THIS(iface);
00207     FIXME("(%p)->(%p)\n", This, p);
00208     return E_NOTIMPL;
00209 }
00210 
00211 static HRESULT WINAPI HTMLTable_put_borderColor(IHTMLTable *iface, VARIANT v)
00212 {
00213     HTMLTable *This = HTMLTABLE_THIS(iface);
00214     FIXME("(%p)->(v)\n", This);
00215     return E_NOTIMPL;
00216 }
00217 
00218 static HRESULT WINAPI HTMLTable_get_borderColor(IHTMLTable *iface, VARIANT *p)
00219 {
00220     HTMLTable *This = HTMLTABLE_THIS(iface);
00221     FIXME("(%p)->(%p)\n", This, p);
00222     return E_NOTIMPL;
00223 }
00224 
00225 static HRESULT WINAPI HTMLTable_put_borderColorLight(IHTMLTable *iface, VARIANT v)
00226 {
00227     HTMLTable *This = HTMLTABLE_THIS(iface);
00228     FIXME("(%p)->(v)\n", This);
00229     return E_NOTIMPL;
00230 }
00231 
00232 static HRESULT WINAPI HTMLTable_get_borderColorLight(IHTMLTable *iface, VARIANT *p)
00233 {
00234     HTMLTable *This = HTMLTABLE_THIS(iface);
00235     FIXME("(%p)->(%p)\n", This, p);
00236     return E_NOTIMPL;
00237 }
00238 
00239 static HRESULT WINAPI HTMLTable_put_borderColorDark(IHTMLTable *iface, VARIANT v)
00240 {
00241     HTMLTable *This = HTMLTABLE_THIS(iface);
00242     FIXME("(%p)->(v)\n", This);
00243     return E_NOTIMPL;
00244 }
00245 
00246 static HRESULT WINAPI HTMLTable_get_borderColorDark(IHTMLTable *iface, VARIANT *p)
00247 {
00248     HTMLTable *This = HTMLTABLE_THIS(iface);
00249     FIXME("(%p)->(%p)\n", This, p);
00250     return E_NOTIMPL;
00251 }
00252 
00253 static HRESULT WINAPI HTMLTable_put_align(IHTMLTable *iface, BSTR v)
00254 {
00255     HTMLTable *This = HTMLTABLE_THIS(iface);
00256     FIXME("(%p)->(%s)\n", This, debugstr_w(v));
00257     return E_NOTIMPL;
00258 }
00259 
00260 static HRESULT WINAPI HTMLTable_get_align(IHTMLTable *iface, BSTR *p)
00261 {
00262     HTMLTable *This = HTMLTABLE_THIS(iface);
00263     FIXME("(%p)->(%p)\n", This, p);
00264     return E_NOTIMPL;
00265 }
00266 
00267 static HRESULT WINAPI HTMLTable_refresh(IHTMLTable *iface)
00268 {
00269     HTMLTable *This = HTMLTABLE_THIS(iface);
00270     FIXME("(%p)\n", This);
00271     return E_NOTIMPL;
00272 }
00273 
00274 static HRESULT WINAPI HTMLTable_get_rows(IHTMLTable *iface, IHTMLElementCollection **p)
00275 {
00276     HTMLTable *This = HTMLTABLE_THIS(iface);
00277     nsIDOMHTMLCollection *nscol;
00278     nsresult nsres;
00279 
00280     TRACE("(%p)->(%p)\n", This, p);
00281 
00282     nsres = nsIDOMHTMLTableElement_GetRows(This->nstable, &nscol);
00283     if(NS_FAILED(nsres)) {
00284         ERR("GetRows failed: %08x\n", nsres);
00285         return E_FAIL;
00286     }
00287 
00288     *p = create_collection_from_htmlcol(This->element.node.doc, (IUnknown*)HTMLTABLE(This), nscol);
00289 
00290     nsIDOMHTMLCollection_Release(nscol);
00291     return S_OK;
00292 }
00293 
00294 static HRESULT WINAPI HTMLTable_put_width(IHTMLTable *iface, VARIANT v)
00295 {
00296     HTMLTable *This = HTMLTABLE_THIS(iface);
00297     FIXME("(%p)->(v)\n", This);
00298     return E_NOTIMPL;
00299 }
00300 
00301 static HRESULT WINAPI HTMLTable_get_width(IHTMLTable *iface, VARIANT *p)
00302 {
00303     HTMLTable *This = HTMLTABLE_THIS(iface);
00304     FIXME("(%p)->(%p)\n", This, p);
00305     return E_NOTIMPL;
00306 }
00307 
00308 static HRESULT WINAPI HTMLTable_put_height(IHTMLTable *iface, VARIANT v)
00309 {
00310     HTMLTable *This = HTMLTABLE_THIS(iface);
00311     FIXME("(%p)->(v)\n", This);
00312     return E_NOTIMPL;
00313 }
00314 
00315 static HRESULT WINAPI HTMLTable_get_height(IHTMLTable *iface, VARIANT *p)
00316 {
00317     HTMLTable *This = HTMLTABLE_THIS(iface);
00318     FIXME("(%p)->(%p)\n", This, p);
00319     return E_NOTIMPL;
00320 }
00321 
00322 static HRESULT WINAPI HTMLTable_put_dataPageSize(IHTMLTable *iface, LONG v)
00323 {
00324     HTMLTable *This = HTMLTABLE_THIS(iface);
00325     FIXME("(%p)->(%d)\n", This, v);
00326     return E_NOTIMPL;
00327 }
00328 
00329 static HRESULT WINAPI HTMLTable_get_dataPageSize(IHTMLTable *iface, LONG *p)
00330 {
00331     HTMLTable *This = HTMLTABLE_THIS(iface);
00332     FIXME("(%p)->(%p)\n", This, p);
00333     return E_NOTIMPL;
00334 }
00335 
00336 static HRESULT WINAPI HTMLTable_nextPage(IHTMLTable *iface)
00337 {
00338     HTMLTable *This = HTMLTABLE_THIS(iface);
00339     FIXME("(%p)\n", This);
00340     return E_NOTIMPL;
00341 }
00342 
00343 static HRESULT WINAPI HTMLTable_previousPage(IHTMLTable *iface)
00344 {
00345     HTMLTable *This = HTMLTABLE_THIS(iface);
00346     FIXME("(%p)\n", This);
00347     return E_NOTIMPL;
00348 }
00349 
00350 static HRESULT WINAPI HTMLTable_get_tHead(IHTMLTable *iface, IHTMLTableSection **p)
00351 {
00352     HTMLTable *This = HTMLTABLE_THIS(iface);
00353     FIXME("(%p)->(%p)\n", This, p);
00354     return E_NOTIMPL;
00355 }
00356 
00357 static HRESULT WINAPI HTMLTable_get_tFoot(IHTMLTable *iface, IHTMLTableSection **p)
00358 {
00359     HTMLTable *This = HTMLTABLE_THIS(iface);
00360     FIXME("(%p)->(%p)\n", This, p);
00361     return E_NOTIMPL;
00362 }
00363 
00364 static HRESULT WINAPI HTMLTable_get_tBodies(IHTMLTable *iface, IHTMLElementCollection **p)
00365 {
00366     HTMLTable *This = HTMLTABLE_THIS(iface);
00367     FIXME("(%p)->(%p)\n", This, p);
00368     return E_NOTIMPL;
00369 }
00370 
00371 static HRESULT WINAPI HTMLTable_get_caption(IHTMLTable *iface, IHTMLTableCaption **p)
00372 {
00373     HTMLTable *This = HTMLTABLE_THIS(iface);
00374     FIXME("(%p)->(%p)\n", This, p);
00375     return E_NOTIMPL;
00376 }
00377 
00378 static HRESULT WINAPI HTMLTable_createTHead(IHTMLTable *iface, IDispatch **head)
00379 {
00380     HTMLTable *This = HTMLTABLE_THIS(iface);
00381     FIXME("(%p)->(%p)\n", This, head);
00382     return E_NOTIMPL;
00383 }
00384 
00385 static HRESULT WINAPI HTMLTable_deleteTHead(IHTMLTable *iface)
00386 {
00387     HTMLTable *This = HTMLTABLE_THIS(iface);
00388     FIXME("(%p)\n", This);
00389     return E_NOTIMPL;
00390 }
00391 
00392 static HRESULT WINAPI HTMLTable_createTFoot(IHTMLTable *iface, IDispatch **foot)
00393 {
00394     HTMLTable *This = HTMLTABLE_THIS(iface);
00395     FIXME("(%p)->(%p)\n", This, foot);
00396     return E_NOTIMPL;
00397 }
00398 
00399 static HRESULT WINAPI HTMLTable_deleteTFoot(IHTMLTable *iface)
00400 {
00401     HTMLTable *This = HTMLTABLE_THIS(iface);
00402     FIXME("(%p)\n", This);
00403     return E_NOTIMPL;
00404 }
00405 
00406 static HRESULT WINAPI HTMLTable_createCaption(IHTMLTable *iface, IHTMLTableCaption **caption)
00407 {
00408     HTMLTable *This = HTMLTABLE_THIS(iface);
00409     FIXME("(%p)->(%p)\n", This, caption);
00410     return E_NOTIMPL;
00411 }
00412 
00413 static HRESULT WINAPI HTMLTable_deleteCaption(IHTMLTable *iface)
00414 {
00415     HTMLTable *This = HTMLTABLE_THIS(iface);
00416     FIXME("(%p)\n", This);
00417     return E_NOTIMPL;
00418 }
00419 
00420 static HRESULT WINAPI HTMLTable_insertRow(IHTMLTable *iface, LONG index, IDispatch **row)
00421 {
00422     HTMLTable *This = HTMLTABLE_THIS(iface);
00423     FIXME("(%p)->(%d %p)\n", This, index, row);
00424     return E_NOTIMPL;
00425 }
00426 
00427 static HRESULT WINAPI HTMLTable_deleteRow(IHTMLTable *iface, LONG index)
00428 {
00429     HTMLTable *This = HTMLTABLE_THIS(iface);
00430     FIXME("(%p)->(%d)\n", This, index);
00431     return E_NOTIMPL;
00432 }
00433 
00434 static HRESULT WINAPI HTMLTable_get_readyState(IHTMLTable *iface, BSTR *p)
00435 {
00436     HTMLTable *This = HTMLTABLE_THIS(iface);
00437     FIXME("(%p)->(%p)\n", This, p);
00438     return E_NOTIMPL;
00439 }
00440 
00441 static HRESULT WINAPI HTMLTable_put_onreadystatechange(IHTMLTable *iface, VARIANT v)
00442 {
00443     HTMLTable *This = HTMLTABLE_THIS(iface);
00444     FIXME("(%p)->(v)\n", This);
00445     return E_NOTIMPL;
00446 }
00447 
00448 static HRESULT WINAPI HTMLTable_get_onreadystatechange(IHTMLTable *iface, VARIANT *p)
00449 {
00450     HTMLTable *This = HTMLTABLE_THIS(iface);
00451     FIXME("(%p)->(%p)\n", This, p);
00452     return E_NOTIMPL;
00453 }
00454 
00455 #undef HTMLTABLE_THIS
00456 
00457 static const IHTMLTableVtbl HTMLTableVtbl = {
00458     HTMLTable_QueryInterface,
00459     HTMLTable_AddRef,
00460     HTMLTable_Release,
00461     HTMLTable_GetTypeInfoCount,
00462     HTMLTable_GetTypeInfo,
00463     HTMLTable_GetIDsOfNames,
00464     HTMLTable_Invoke,
00465     HTMLTable_put_cols,
00466     HTMLTable_get_cols,
00467     HTMLTable_put_border,
00468     HTMLTable_get_border,
00469     HTMLTable_put_frame,
00470     HTMLTable_get_frame,
00471     HTMLTable_put_rules,
00472     HTMLTable_get_rules,
00473     HTMLTable_put_cellSpacing,
00474     HTMLTable_get_cellSpacing,
00475     HTMLTable_put_cellPadding,
00476     HTMLTable_get_cellPadding,
00477     HTMLTable_put_background,
00478     HTMLTable_get_background,
00479     HTMLTable_put_bgColor,
00480     HTMLTable_get_bgColor,
00481     HTMLTable_put_borderColor,
00482     HTMLTable_get_borderColor,
00483     HTMLTable_put_borderColorLight,
00484     HTMLTable_get_borderColorLight,
00485     HTMLTable_put_borderColorDark,
00486     HTMLTable_get_borderColorDark,
00487     HTMLTable_put_align,
00488     HTMLTable_get_align,
00489     HTMLTable_refresh,
00490     HTMLTable_get_rows,
00491     HTMLTable_put_width,
00492     HTMLTable_get_width,
00493     HTMLTable_put_height,
00494     HTMLTable_get_height,
00495     HTMLTable_put_dataPageSize,
00496     HTMLTable_get_dataPageSize,
00497     HTMLTable_nextPage,
00498     HTMLTable_previousPage,
00499     HTMLTable_get_tHead,
00500     HTMLTable_get_tFoot,
00501     HTMLTable_get_tBodies,
00502     HTMLTable_get_caption,
00503     HTMLTable_createTHead,
00504     HTMLTable_deleteTHead,
00505     HTMLTable_createTFoot,
00506     HTMLTable_deleteTFoot,
00507     HTMLTable_createCaption,
00508     HTMLTable_deleteCaption,
00509     HTMLTable_insertRow,
00510     HTMLTable_deleteRow,
00511     HTMLTable_get_readyState,
00512     HTMLTable_put_onreadystatechange,
00513     HTMLTable_get_onreadystatechange
00514 };
00515 
00516 #define HTMLTABLE_NODE_THIS(iface) DEFINE_THIS2(HTMLTable, element.node, iface)
00517 
00518 static HRESULT HTMLTable_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
00519 {
00520     HTMLTable *This = HTMLTABLE_NODE_THIS(iface);
00521 
00522     *ppv = NULL;
00523 
00524     if(IsEqualGUID(&IID_IUnknown, riid)) {
00525         TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
00526         *ppv = HTMLTABLE(This);
00527     }else if(IsEqualGUID(&IID_IDispatch, riid)) {
00528         TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
00529         *ppv = HTMLTABLE(This);
00530     }else if(IsEqualGUID(&IID_IHTMLTable, riid)) {
00531         TRACE("(%p)->(IID_IHTMLTable %p)\n", This, ppv);
00532         *ppv = HTMLTABLE(This);
00533     }
00534 
00535     if(*ppv) {
00536         IUnknown_AddRef((IUnknown*)*ppv);
00537         return S_OK;
00538     }
00539 
00540     return HTMLElement_QI(&This->element.node, riid, ppv);
00541 }
00542 
00543 static void HTMLTable_destructor(HTMLDOMNode *iface)
00544 {
00545     HTMLTable *This = HTMLTABLE_NODE_THIS(iface);
00546 
00547     if(This->nstable)
00548         nsIDOMHTMLTableElement_Release(This->nstable);
00549 
00550     HTMLElement_destructor(&This->element.node);
00551 }
00552 
00553 #undef HTMLTABLE_NODE_THIS
00554 
00555 static const NodeImplVtbl HTMLTableImplVtbl = {
00556     HTMLTable_QI,
00557     HTMLTable_destructor
00558 };
00559 
00560 static const tid_t HTMLTable_iface_tids[] = {
00561     HTMLELEMENT_TIDS,
00562     IHTMLTable_tid,
00563     0
00564 };
00565 
00566 static dispex_static_data_t HTMLTable_dispex = {
00567     NULL,
00568     DispHTMLTable_tid,
00569     NULL,
00570     HTMLTable_iface_tids
00571 };
00572 
00573 HTMLElement *HTMLTable_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
00574 {
00575     HTMLTable *ret = heap_alloc_zero(sizeof(HTMLTable));
00576     nsresult nsres;
00577 
00578     ret->element.node.vtbl = &HTMLTableImplVtbl;
00579     ret->lpHTMLTableVtbl = &HTMLTableVtbl;
00580 
00581     HTMLElement_Init(&ret->element, doc, nselem, &HTMLTable_dispex);
00582 
00583     ConnectionPoint_Init(&ret->cp, &ret->element.cp_container, &DIID_HTMLTableEvents, NULL);
00584 
00585     nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableElement, (void**)&ret->nstable);
00586     if(NS_FAILED(nsres))
00587         ERR("Could not get nsIDOMHTMLTableElement iface: %08x\n", nsres);
00588 
00589     return &ret->element;
00590 }

Generated on Sat May 26 2012 04:23:36 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.