ReactOS 0.4.15-dev-8241-g63935f8
htmltable.c
Go to the documentation of this file.
1/*
2 * Copyright 2007 Jacek Caban for CodeWeavers
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19#include "mshtml_private.h"
20
21struct HTMLTable {
23
24 IHTMLTable IHTMLTable_iface;
25 IHTMLTable2 IHTMLTable2_iface;
26 IHTMLTable3 IHTMLTable3_iface;
27
29};
30
31static inline HTMLTable *impl_from_IHTMLTable(IHTMLTable *iface)
32{
33 return CONTAINING_RECORD(iface, HTMLTable, IHTMLTable_iface);
34}
35
36static inline HTMLTable *impl_from_IHTMLTable2(IHTMLTable2 *iface)
37{
38 return CONTAINING_RECORD(iface, HTMLTable, IHTMLTable2_iface);
39}
40
41static inline HTMLTable *impl_from_IHTMLTable3(IHTMLTable3 *iface)
42{
43 return CONTAINING_RECORD(iface, HTMLTable, IHTMLTable3_iface);
44}
45
46static HRESULT var2str(const VARIANT *p, nsAString *nsstr)
47{
48 BSTR str;
49 BOOL ret;
51
52 switch(V_VT(p)) {
53 case VT_BSTR:
54 return nsAString_Init(nsstr, V_BSTR(p))?
56 case VT_R8:
57 hres = VarBstrFromR8(V_R8(p), 0, 0, &str);
58 break;
59 case VT_R4:
60 hres = VarBstrFromR4(V_R4(p), 0, 0, &str);
61 break;
62 case VT_I4:
63 hres = VarBstrFromI4(V_I4(p), 0, 0, &str);
64 break;
65 default:
66 FIXME("unsupported arg %s\n", debugstr_variant(p));
67 return E_NOTIMPL;
68 }
69 if (FAILED(hres))
70 return hres;
71
72 ret = nsAString_Init(nsstr, str);
74 return ret ? S_OK : E_OUTOFMEMORY;
75}
76
77static HRESULT nsstr_to_truncated_bstr(const nsAString *nsstr, BSTR *ret_ptr)
78{
79 const PRUnichar *str, *ptr, *end = NULL;
80 BSTR ret;
81
82 nsAString_GetData(nsstr, &str);
83
84 for(ptr = str; isdigitW(*ptr); ptr++);
85 if(*ptr == '.') {
86 for(end = ptr++; isdigitW(*ptr); ptr++);
87 if(*ptr)
88 end = NULL;
89 }
90
92
93 *ret_ptr = ret;
94 return ret ? S_OK : E_OUTOFMEMORY;
95}
96
97static HRESULT WINAPI HTMLTable_QueryInterface(IHTMLTable *iface,
98 REFIID riid, void **ppv)
99{
101
102 return IHTMLDOMNode_QueryInterface(&This->element.node.IHTMLDOMNode_iface, riid, ppv);
103}
104
105static ULONG WINAPI HTMLTable_AddRef(IHTMLTable *iface)
106{
108
109 return IHTMLDOMNode_AddRef(&This->element.node.IHTMLDOMNode_iface);
110}
111
112static ULONG WINAPI HTMLTable_Release(IHTMLTable *iface)
113{
115
116 return IHTMLDOMNode_Release(&This->element.node.IHTMLDOMNode_iface);
117}
118
119static HRESULT WINAPI HTMLTable_GetTypeInfoCount(IHTMLTable *iface, UINT *pctinfo)
120{
122 return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
123}
124
125static HRESULT WINAPI HTMLTable_GetTypeInfo(IHTMLTable *iface, UINT iTInfo,
126 LCID lcid, ITypeInfo **ppTInfo)
127{
129 return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
130 ppTInfo);
131}
132
134 LPOLESTR *rgszNames, UINT cNames,
135 LCID lcid, DISPID *rgDispId)
136{
138 return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
139 cNames, lcid, rgDispId);
140}
141
142static HRESULT WINAPI HTMLTable_Invoke(IHTMLTable *iface, DISPID dispIdMember,
143 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
144 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
145{
147 return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
148 lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
149}
150
151static HRESULT WINAPI HTMLTable_put_cols(IHTMLTable *iface, LONG v)
152{
154 FIXME("(%p)->(%d)\n", This, v);
155 return E_NOTIMPL;
156}
157
158static HRESULT WINAPI HTMLTable_get_cols(IHTMLTable *iface, LONG *p)
159{
161 FIXME("(%p)->(%p)\n", This, p);
162 return E_NOTIMPL;
163}
164
165static HRESULT WINAPI HTMLTable_put_border(IHTMLTable *iface, VARIANT v)
166{
168 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
169 return E_NOTIMPL;
170}
171
172static HRESULT WINAPI HTMLTable_get_border(IHTMLTable *iface, VARIANT *p)
173{
175 FIXME("(%p)->(%p)\n", This, p);
176 return E_NOTIMPL;
177}
178
179static HRESULT WINAPI HTMLTable_put_frame(IHTMLTable *iface, BSTR v)
180{
183 nsresult nsres;
184
185 TRACE("(%p)->(%s)\n", This, debugstr_w(v));
186
188 nsres = nsIDOMHTMLTableElement_SetFrame(This->nstable, &str);
190
191 if (NS_FAILED(nsres)) {
192 ERR("SetFrame(%s) failed: %08x\n", debugstr_w(v), nsres);
193 return E_FAIL;
194 }
195 return S_OK;
196}
197
198static HRESULT WINAPI HTMLTable_get_frame(IHTMLTable *iface, BSTR *p)
199{
202 nsresult nsres;
203
204 TRACE("(%p)->(%p)\n", This, p);
205
207 nsres = nsIDOMHTMLTableElement_GetFrame(This->nstable, &str);
208
209 return return_nsstr(nsres, &str, p);
210}
211
212static HRESULT WINAPI HTMLTable_put_rules(IHTMLTable *iface, BSTR v)
213{
215 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
216 return E_NOTIMPL;
217}
218
219static HRESULT WINAPI HTMLTable_get_rules(IHTMLTable *iface, BSTR *p)
220{
222 FIXME("(%p)->(%p)\n", This, p);
223 return E_NOTIMPL;
224}
225
227{
229 nsAString nsstr;
230 WCHAR buf[64];
231 nsresult nsres;
232
233 TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
234
235 switch(V_VT(&v)) {
236 case VT_BSTR:
237 nsAString_InitDepend(&nsstr, V_BSTR(&v));
238 break;
239 case VT_I4: {
240 static const WCHAR formatW[] = {'%','d',0};
241 sprintfW(buf, formatW, V_I4(&v));
242 nsAString_InitDepend(&nsstr, buf);
243 break;
244 }
245 default:
246 FIXME("unsupported arg %s\n", debugstr_variant(&v));
247 return E_NOTIMPL;
248 }
249
250 nsres = nsIDOMHTMLTableElement_SetCellSpacing(This->nstable, &nsstr);
251 nsAString_Finish(&nsstr);
252 if(NS_FAILED(nsres)) {
253 ERR("SetCellSpacing failed: %08x\n", nsres);
254 return E_FAIL;
255 }
256
257 return S_OK;
258}
259
261{
263 nsAString nsstr;
264 nsresult nsres;
265
266 TRACE("(%p)->(%p)\n", This, p);
267
268 nsAString_Init(&nsstr, NULL);
269 nsres = nsIDOMHTMLTableElement_GetCellSpacing(This->nstable, &nsstr);
270 V_VT(p) = VT_BSTR;
271 return return_nsstr(nsres, &nsstr, &V_BSTR(p));
272}
273
275{
279 nsresult nsres;
280
281 TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
282
283 hres = var2str(&v, &val);
284 if(FAILED(hres))
285 return hres;
286
287 nsres = nsIDOMHTMLTableElement_SetCellPadding(This->nstable, &val);
289 if(NS_FAILED(nsres)) {
290 ERR("Set Width(%s) failed, err = %08x\n", debugstr_variant(&v), nsres);
291 return E_FAIL;
292 }
293
294 return S_OK;
295}
296
298{
301 nsresult nsres;
302
303 TRACE("(%p)->(%p)\n", This, p);
304
306 nsres = nsIDOMHTMLTableElement_GetCellPadding(This->nstable, &val);
307 return return_nsstr_variant(nsres, &val, p);
308}
309
310static HRESULT WINAPI HTMLTable_put_background(IHTMLTable *iface, BSTR v)
311{
313 FIXME("(%p)->(%s)\n", This, debugstr_w(v));
314 return E_NOTIMPL;
315}
316
317static HRESULT WINAPI HTMLTable_get_background(IHTMLTable *iface, BSTR *p)
318{
320 FIXME("(%p)->(%p)\n", This, p);
321 return E_NOTIMPL;
322}
323
324static HRESULT WINAPI HTMLTable_put_bgColor(IHTMLTable *iface, VARIANT v)
325{
328 nsresult nsres;
329
330 TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
331
332 if(!variant_to_nscolor(&v, &val))
333 return S_OK;
334
335 nsres = nsIDOMHTMLTableElement_SetBgColor(This->nstable, &val);
337 if (NS_FAILED(nsres)){
338 ERR("Set BgColor(%s) failed!\n", debugstr_variant(&v));
339 return E_FAIL;
340 }
341
342 return S_OK;
343}
344
345static HRESULT WINAPI HTMLTable_get_bgColor(IHTMLTable *iface, VARIANT *p)
346{
348 nsAString strColor;
349 nsresult nsres;
351 const PRUnichar *color;
352
353 TRACE("(%p)->(%p)\n", This, p);
354
355 nsAString_Init(&strColor, NULL);
356 nsres = nsIDOMHTMLTableElement_GetBgColor(This->nstable, &strColor);
357
358 if(NS_SUCCEEDED(nsres)) {
359 nsAString_GetData(&strColor, &color);
360 V_VT(p) = VT_BSTR;
362 }else {
363 ERR("SetBgColor failed: %08x\n", nsres);
364 hres = E_FAIL;
365 }
366
367 nsAString_Finish(&strColor);
368 return hres;
369}
370
372{
374 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
375 return E_NOTIMPL;
376}
377
379{
381 FIXME("(%p)->(%p)\n", This, p);
382 return E_NOTIMPL;
383}
384
386{
388 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
389 return E_NOTIMPL;
390}
391
393{
395 FIXME("(%p)->(%p)\n", This, p);
396 return E_NOTIMPL;
397}
398
400{
402 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
403 return E_NOTIMPL;
404}
405
407{
409 FIXME("(%p)->(%p)\n", This, p);
410 return E_NOTIMPL;
411}
412
413static HRESULT WINAPI HTMLTable_put_align(IHTMLTable *iface, BSTR v)
414{
417 nsresult nsres;
418
419 TRACE("(%p)->(%s)\n", This, debugstr_w(v));
420
422
423 nsres = nsIDOMHTMLTableElement_SetAlign(This->nstable, &val);
425 if (NS_FAILED(nsres)){
426 ERR("Set Align(%s) failed!\n", debugstr_w(v));
427 return E_FAIL;
428 }
429 return S_OK;
430}
431
432static HRESULT WINAPI HTMLTable_get_align(IHTMLTable *iface, BSTR *p)
433{
436 nsresult nsres;
437
438 TRACE("(%p)->(%p)\n", This, p);
439
441 nsres = nsIDOMHTMLTableElement_GetAlign(This->nstable, &val);
442
443 return return_nsstr(nsres, &val, p);
444}
445
446static HRESULT WINAPI HTMLTable_refresh(IHTMLTable *iface)
447{
449 FIXME("(%p)\n", This);
450 return E_NOTIMPL;
451}
452
453static HRESULT WINAPI HTMLTable_get_rows(IHTMLTable *iface, IHTMLElementCollection **p)
454{
457 nsresult nsres;
458
459 TRACE("(%p)->(%p)\n", This, p);
460
461 nsres = nsIDOMHTMLTableElement_GetRows(This->nstable, &nscol);
462 if(NS_FAILED(nsres)) {
463 ERR("GetRows failed: %08x\n", nsres);
464 return E_FAIL;
465 }
466
467 *p = create_collection_from_htmlcol(This->element.node.doc, nscol);
468
469 nsIDOMHTMLCollection_Release(nscol);
470 return S_OK;
471}
472
473static HRESULT WINAPI HTMLTable_put_width(IHTMLTable *iface, VARIANT v)
474{
478 nsresult nsres;
479
480 TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
481 hres = var2str(&v, &val);
482
483 if (FAILED(hres)){
484 ERR("Set Width(%s) failed when initializing a nsAString, err = %08x\n",
486 return hres;
487 }
488
489 nsres = nsIDOMHTMLTableElement_SetWidth(This->nstable, &val);
491
492 if (NS_FAILED(nsres)){
493 ERR("Set Width(%s) failed, err = %08x\n", debugstr_variant(&v), nsres);
494 return E_FAIL;
495 }
496 return S_OK;
497}
498
499static HRESULT WINAPI HTMLTable_get_width(IHTMLTable *iface, VARIANT *p)
500{
503 BSTR bstr;
504 nsresult nsres;
506
507 TRACE("(%p)->(%p)\n", This, p);
509 nsres = nsIDOMHTMLTableElement_GetWidth(This->nstable, &val);
510 if (NS_FAILED(nsres)){
511 ERR("Get Width failed!\n");
513 return E_FAIL;
514 }
515
518
519 V_VT(p) = VT_BSTR;
520 V_BSTR(p) = bstr;
521 return hres;
522}
523
524static HRESULT WINAPI HTMLTable_put_height(IHTMLTable *iface, VARIANT v)
525{
527 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
528 return E_NOTIMPL;
529}
530
531static HRESULT WINAPI HTMLTable_get_height(IHTMLTable *iface, VARIANT *p)
532{
534 FIXME("(%p)->(%p)\n", This, p);
535 return E_NOTIMPL;
536}
537
539{
541 FIXME("(%p)->(%d)\n", This, v);
542 return E_NOTIMPL;
543}
544
545static HRESULT WINAPI HTMLTable_get_dataPageSize(IHTMLTable *iface, LONG *p)
546{
548 FIXME("(%p)->(%p)\n", This, p);
549 return E_NOTIMPL;
550}
551
552static HRESULT WINAPI HTMLTable_nextPage(IHTMLTable *iface)
553{
555 FIXME("(%p)\n", This);
556 return E_NOTIMPL;
557}
558
559static HRESULT WINAPI HTMLTable_previousPage(IHTMLTable *iface)
560{
562 FIXME("(%p)\n", This);
563 return E_NOTIMPL;
564}
565
566static HRESULT WINAPI HTMLTable_get_tHead(IHTMLTable *iface, IHTMLTableSection **p)
567{
569 FIXME("(%p)->(%p)\n", This, p);
570 return E_NOTIMPL;
571}
572
573static HRESULT WINAPI HTMLTable_get_tFoot(IHTMLTable *iface, IHTMLTableSection **p)
574{
576 FIXME("(%p)->(%p)\n", This, p);
577 return E_NOTIMPL;
578}
579
580static HRESULT WINAPI HTMLTable_get_tBodies(IHTMLTable *iface, IHTMLElementCollection **p)
581{
583 nsIDOMHTMLCollection *nscol = NULL;
584 nsresult nsres;
585
586 TRACE("(%p)->(%p)\n", This, p);
587
588 nsres = nsIDOMHTMLTableElement_GetTBodies(This->nstable, &nscol);
589 if(NS_FAILED(nsres)) {
590 ERR("GetTBodies failed: %08x\n", nsres);
591 return E_FAIL;
592 }
593
594 *p = create_collection_from_htmlcol(This->element.node.doc, nscol);
595
596 nsIDOMHTMLCollection_Release(nscol);
597 return S_OK;
598}
599
600static HRESULT WINAPI HTMLTable_get_caption(IHTMLTable *iface, IHTMLTableCaption **p)
601{
603 FIXME("(%p)->(%p)\n", This, p);
604 return E_NOTIMPL;
605}
606
608{
610 FIXME("(%p)->(%p)\n", This, head);
611 return E_NOTIMPL;
612}
613
614static HRESULT WINAPI HTMLTable_deleteTHead(IHTMLTable *iface)
615{
617 FIXME("(%p)\n", This);
618 return E_NOTIMPL;
619}
620
621static HRESULT WINAPI HTMLTable_createTFoot(IHTMLTable *iface, IDispatch **foot)
622{
624 FIXME("(%p)->(%p)\n", This, foot);
625 return E_NOTIMPL;
626}
627
628static HRESULT WINAPI HTMLTable_deleteTFoot(IHTMLTable *iface)
629{
631 FIXME("(%p)\n", This);
632 return E_NOTIMPL;
633}
634
635static HRESULT WINAPI HTMLTable_createCaption(IHTMLTable *iface, IHTMLTableCaption **caption)
636{
638 FIXME("(%p)->(%p)\n", This, caption);
639 return E_NOTIMPL;
640}
641
642static HRESULT WINAPI HTMLTable_deleteCaption(IHTMLTable *iface)
643{
645 FIXME("(%p)\n", This);
646 return E_NOTIMPL;
647}
648
650{
652 nsIDOMHTMLElement *nselem;
654 nsresult nsres;
656
657 TRACE("(%p)->(%d %p)\n", This, index, row);
658 nsres = nsIDOMHTMLTableElement_InsertRow(This->nstable, index, &nselem);
659 if(NS_FAILED(nsres)) {
660 ERR("Insert Row at %d failed: %08x\n", index, nsres);
661 return E_FAIL;
662 }
663
664 hres = HTMLTableRow_Create(This->element.node.doc, nselem, &elem);
665 nsIDOMHTMLElement_Release(nselem);
666 if (FAILED(hres)) {
667 ERR("Create TableRow failed: %08x\n", hres);
668 return hres;
669 }
670
671 *row = (IDispatch *)&elem->IHTMLElement_iface;
672 return S_OK;
673}
674
675static HRESULT WINAPI HTMLTable_deleteRow(IHTMLTable *iface, LONG index)
676{
678 nsresult nsres;
679
680 TRACE("(%p)->(%d)\n", This, index);
681 nsres = nsIDOMHTMLTableElement_DeleteRow(This->nstable, index);
682 if(NS_FAILED(nsres)) {
683 ERR("Delete Row failed: %08x\n", nsres);
684 return E_FAIL;
685 }
686 return S_OK;
687}
688
689static HRESULT WINAPI HTMLTable_get_readyState(IHTMLTable *iface, BSTR *p)
690{
692 FIXME("(%p)->(%p)\n", This, p);
693 return E_NOTIMPL;
694}
695
697{
699 FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
700 return E_NOTIMPL;
701}
702
704{
706 FIXME("(%p)->(%p)\n", This, p);
707 return E_NOTIMPL;
708}
709
710static const IHTMLTableVtbl HTMLTableVtbl = {
767};
768
769/* IHTMLTable2 */
770static HRESULT WINAPI HTMLTable2_QueryInterface(IHTMLTable2 *iface,
771 REFIID riid, void **ppv)
772{
774
775 return IHTMLDOMNode_QueryInterface(&This->element.node.IHTMLDOMNode_iface, riid, ppv);
776}
777
778static ULONG WINAPI HTMLTable2_AddRef(IHTMLTable2 *iface)
779{
781
782 return IHTMLDOMNode_AddRef(&This->element.node.IHTMLDOMNode_iface);
783}
784
785static ULONG WINAPI HTMLTable2_Release(IHTMLTable2 *iface)
786{
788
789 return IHTMLDOMNode_Release(&This->element.node.IHTMLDOMNode_iface);
790}
791
792static HRESULT WINAPI HTMLTable2_GetTypeInfoCount(IHTMLTable2 *iface, UINT *pctinfo)
793{
795 return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
796}
797
798static HRESULT WINAPI HTMLTable2_GetTypeInfo(IHTMLTable2 *iface, UINT iTInfo,
799 LCID lcid, ITypeInfo **ppTInfo)
800{
802 return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
803 ppTInfo);
804}
805
807 LPOLESTR *rgszNames, UINT cNames,
808 LCID lcid, DISPID *rgDispId)
809{
811 return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
812 cNames, lcid, rgDispId);
813}
814
815static HRESULT WINAPI HTMLTable2_Invoke(IHTMLTable2 *iface, DISPID dispIdMember,
816 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
817 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
818{
820 return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
821 lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
822}
823
824static HRESULT WINAPI HTMLTable2_firstPage(IHTMLTable2 *iface)
825{
827 FIXME("(%p)->()\n", This);
828 return E_NOTIMPL;
829}
830
831static HRESULT WINAPI HTMLTable2_lastPage(IHTMLTable2 *iface)
832{
834 FIXME("(%p)->()\n", This);
835 return E_NOTIMPL;
836}
837
838static HRESULT WINAPI HTMLTable2_cells(IHTMLTable2 *iface, IHTMLElementCollection **p)
839{
841 FIXME("(%p)->(%p)\n", This, p);
842 return E_NOTIMPL;
843}
844
845static HRESULT WINAPI HTMLTable2_moveRow(IHTMLTable2 *iface, LONG indexFrom, LONG indexTo, IDispatch **row)
846{
848 FIXME("(%p)->(%d %d %p)\n", This, indexFrom, indexTo, row);
849 return E_NOTIMPL;
850}
851
852
853static const IHTMLTable2Vtbl HTMLTable2Vtbl = {
865};
866
867/* IHTMLTable3 */
868static HRESULT WINAPI HTMLTable3_QueryInterface(IHTMLTable3 *iface,
869 REFIID riid, void **ppv)
870{
872
873 return IHTMLDOMNode_QueryInterface(&This->element.node.IHTMLDOMNode_iface, riid, ppv);
874}
875
876static ULONG WINAPI HTMLTable3_AddRef(IHTMLTable3 *iface)
877{
879
880 return IHTMLDOMNode_AddRef(&This->element.node.IHTMLDOMNode_iface);
881}
882
883static ULONG WINAPI HTMLTable3_Release(IHTMLTable3 *iface)
884{
886
887 return IHTMLDOMNode_Release(&This->element.node.IHTMLDOMNode_iface);
888}
889
890static HRESULT WINAPI HTMLTable3_GetTypeInfoCount(IHTMLTable3 *iface, UINT *pctinfo)
891{
893 return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
894}
895
896static HRESULT WINAPI HTMLTable3_GetTypeInfo(IHTMLTable3 *iface, UINT iTInfo,
897 LCID lcid, ITypeInfo **ppTInfo)
898{
900 return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
901 ppTInfo);
902}
903
905 LPOLESTR *rgszNames, UINT cNames,
906 LCID lcid, DISPID *rgDispId)
907{
909 return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
910 cNames, lcid, rgDispId);
911}
912
913static HRESULT WINAPI HTMLTable3_Invoke(IHTMLTable3 *iface, DISPID dispIdMember,
914 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
915 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
916{
918 return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
919 lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
920}
921
922static HRESULT WINAPI HTMLTable3_put_summary(IHTMLTable3 *iface, BSTR v)
923{
926 nsresult nsres;
927
928 TRACE("(%p)->(%s)\n", This, debugstr_w(v));
929
931
932 nsres = nsIDOMHTMLTableElement_SetSummary(This->nstable, &str);
933
935 if (NS_FAILED(nsres)) {
936 ERR("Set summary(%s) failed: %08x\n", debugstr_w(v), nsres);
937 return E_FAIL;
938 }
939 return S_OK;
940}
941
942static HRESULT WINAPI HTMLTable3_get_summary(IHTMLTable3 *iface, BSTR * p)
943{
946 nsresult nsres;
947
948 TRACE("(%p)->(%p)\n", This, p);
949
951 nsres = nsIDOMHTMLTableElement_GetSummary(This->nstable, &str);
952
953 return return_nsstr(nsres, &str, p);
954}
955
956static const IHTMLTable3Vtbl HTMLTable3Vtbl = {
966};
967
969{
970 return CONTAINING_RECORD(iface, HTMLTable, element.node);
971}
972
974{
976
977 *ppv = NULL;
978
980 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
981 *ppv = &This->IHTMLTable_iface;
982 }else if(IsEqualGUID(&IID_IDispatch, riid)) {
983 TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
984 *ppv = &This->IHTMLTable_iface;
985 }else if(IsEqualGUID(&IID_IHTMLTable, riid)) {
986 TRACE("(%p)->(IID_IHTMLTable %p)\n", This, ppv);
987 *ppv = &This->IHTMLTable_iface;
988 }else if(IsEqualGUID(&IID_IHTMLTable2, riid)) {
989 TRACE("(%p)->(IID_IHTMLTable2 %p)\n", This, ppv);
990 *ppv = &This->IHTMLTable2_iface;
991 }else if(IsEqualGUID(&IID_IHTMLTable3, riid)) {
992 TRACE("(%p)->(IID_IHTMLTable3 %p)\n", This, ppv);
993 *ppv = &This->IHTMLTable3_iface;
994 }
995
996 if(*ppv) {
997 IUnknown_AddRef((IUnknown*)*ppv);
998 return S_OK;
999 }
1000
1001 return HTMLElement_QI(&This->element.node, riid, ppv);
1002}
1003
1005{
1007
1008 if(This->nstable)
1009 note_cc_edge((nsISupports*)This->nstable, "This->nstable", cb);
1010}
1011
1013{
1015
1016 if(This->nstable) {
1017 nsIDOMHTMLTableElement *nstable = This->nstable;
1018
1019 This->nstable = NULL;
1020 nsIDOMHTMLTableElement_Release(nstable);
1021 }
1022}
1023
1024static const cpc_entry_t HTMLTable_cpc[] = {
1025 {&DIID_HTMLTableEvents},
1027 {NULL}
1028};
1029
1037 NULL,
1038 NULL,
1039 NULL,
1040 NULL,
1041 NULL,
1042 NULL,
1043 NULL,
1044 NULL,
1045 NULL,
1048};
1049
1050static const tid_t HTMLTable_iface_tids[] = {
1052 IHTMLTable_tid,
1053 IHTMLTable2_tid,
1054 IHTMLTable3_tid,
1055 0
1056};
1057
1059 NULL,
1060 DispHTMLTable_tid,
1061 NULL,
1063};
1064
1066{
1067 HTMLTable *ret;
1068 nsresult nsres;
1069
1070 ret = heap_alloc_zero(sizeof(HTMLTable));
1071 if(!ret)
1072 return E_OUTOFMEMORY;
1073
1074 ret->element.node.vtbl = &HTMLTableImplVtbl;
1075 ret->IHTMLTable_iface.lpVtbl = &HTMLTableVtbl;
1076 ret->IHTMLTable2_iface.lpVtbl = &HTMLTable2Vtbl;
1077 ret->IHTMLTable3_iface.lpVtbl = &HTMLTable3Vtbl;
1078
1079 HTMLElement_Init(&ret->element, doc, nselem, &HTMLTable_dispex);
1080
1081 nsres = nsIDOMHTMLElement_QueryInterface(nselem, &IID_nsIDOMHTMLTableElement, (void**)&ret->nstable);
1082 assert(nsres == NS_OK);
1083
1084 *elem = &ret->element;
1085 return S_OK;
1086}
struct outqueuenode * head
Definition: adnsresfilter.c:66
const GUID IID_IUnknown
#define FIXME(fmt,...)
Definition: debug.h:114
#define ERR(fmt,...)
Definition: debug.h:113
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
#define NULL
Definition: types.h:112
OLECHAR * BSTR
Definition: compat.h:2293
@ VT_BSTR
Definition: compat.h:2303
@ VT_R4
Definition: compat.h:2299
@ VT_R8
Definition: compat.h:2300
@ VT_I4
Definition: compat.h:2298
HRESULT WINAPI VarBstrFromR8(double dblIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
Definition: vartype.c:6587
HRESULT WINAPI VarBstrFromI4(LONG lIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
Definition: vartype.c:6445
HRESULT WINAPI VarBstrFromR4(FLOAT fltIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
Definition: vartype.c:6566
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
Definition: typeof.h:78
#define assert(x)
Definition: debug.h:53
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned short WORD
Definition: ntddk_ex.h:93
const GLdouble * v
Definition: gl.h:2040
GLuint GLuint end
Definition: gl.h:1545
GLuint color
Definition: glext.h:6243
GLuint index
Definition: glext.h:6031
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLuint GLfloat * val
Definition: glext.h:7180
GLfloat GLfloat p
Definition: glext.h:8902
HRESULT nscolor_to_str(LPCWSTR color, BSTR *ret)
Definition: htmlbody.c:111
BOOL variant_to_nscolor(const VARIANT *v, nsAString *nsstr)
Definition: htmlbody.c:142
HRESULT HTMLElement_clone(HTMLDOMNode *iface, nsIDOMNode *nsnode, HTMLDOMNode **ret)
Definition: htmlelem.c:3793
void HTMLElement_destructor(HTMLDOMNode *iface)
Definition: htmlelem.c:3764
HRESULT HTMLElement_handle_event(HTMLDOMNode *iface, DWORD eid, nsIDOMEvent *event, BOOL *prevent_default)
Definition: htmlelem.c:3815
void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, dispex_static_data_t *dispex_data)
Definition: htmlelem.c:4008
HRESULT HTMLElement_get_attr_col(HTMLDOMNode *iface, HTMLAttributeCollection **ac)
Definition: htmlelem.c:4827
HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
Definition: htmlelem.c:3738
IHTMLElementCollection * create_collection_from_htmlcol(HTMLDocumentNode *doc, nsIDOMHTMLCollection *nscol)
Definition: htmlelemcol.c:705
static HRESULT WINAPI HTMLTable_deleteRow(IHTMLTable *iface, LONG index)
Definition: htmltable.c:675
static HRESULT WINAPI HTMLTable_GetTypeInfo(IHTMLTable *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: htmltable.c:125
static HRESULT WINAPI HTMLTable_QueryInterface(IHTMLTable *iface, REFIID riid, void **ppv)
Definition: htmltable.c:97
static HRESULT WINAPI HTMLTable_previousPage(IHTMLTable *iface)
Definition: htmltable.c:559
static HRESULT WINAPI HTMLTable_get_readyState(IHTMLTable *iface, BSTR *p)
Definition: htmltable.c:689
static HRESULT WINAPI HTMLTable3_QueryInterface(IHTMLTable3 *iface, REFIID riid, void **ppv)
Definition: htmltable.c:868
static HRESULT WINAPI HTMLTable2_moveRow(IHTMLTable2 *iface, LONG indexFrom, LONG indexTo, IDispatch **row)
Definition: htmltable.c:845
static void HTMLTable_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb)
Definition: htmltable.c:1004
static ULONG WINAPI HTMLTable_Release(IHTMLTable *iface)
Definition: htmltable.c:112
static const IHTMLTableVtbl HTMLTableVtbl
Definition: htmltable.c:710
static ULONG WINAPI HTMLTable2_AddRef(IHTMLTable2 *iface)
Definition: htmltable.c:778
static HRESULT WINAPI HTMLTable3_Invoke(IHTMLTable3 *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: htmltable.c:913
static HRESULT WINAPI HTMLTable_get_height(IHTMLTable *iface, VARIANT *p)
Definition: htmltable.c:531
static HRESULT WINAPI HTMLTable_GetTypeInfoCount(IHTMLTable *iface, UINT *pctinfo)
Definition: htmltable.c:119
static HRESULT WINAPI HTMLTable_put_onreadystatechange(IHTMLTable *iface, VARIANT v)
Definition: htmltable.c:696
static HRESULT WINAPI HTMLTable_get_cellPadding(IHTMLTable *iface, VARIANT *p)
Definition: htmltable.c:297
static HRESULT WINAPI HTMLTable_insertRow(IHTMLTable *iface, LONG index, IDispatch **row)
Definition: htmltable.c:649
static HRESULT WINAPI HTMLTable_deleteTHead(IHTMLTable *iface)
Definition: htmltable.c:614
static const IHTMLTable2Vtbl HTMLTable2Vtbl
Definition: htmltable.c:853
static HRESULT nsstr_to_truncated_bstr(const nsAString *nsstr, BSTR *ret_ptr)
Definition: htmltable.c:77
static HRESULT WINAPI HTMLTable_get_align(IHTMLTable *iface, BSTR *p)
Definition: htmltable.c:432
static HRESULT WINAPI HTMLTable_get_borderColorDark(IHTMLTable *iface, VARIANT *p)
Definition: htmltable.c:406
static HRESULT WINAPI HTMLTable_get_rows(IHTMLTable *iface, IHTMLElementCollection **p)
Definition: htmltable.c:453
static HRESULT WINAPI HTMLTable_put_rules(IHTMLTable *iface, BSTR v)
Definition: htmltable.c:212
static HRESULT WINAPI HTMLTable_put_cellSpacing(IHTMLTable *iface, VARIANT v)
Definition: htmltable.c:226
static HRESULT WINAPI HTMLTable_put_height(IHTMLTable *iface, VARIANT v)
Definition: htmltable.c:524
static HRESULT WINAPI HTMLTable2_Invoke(IHTMLTable2 *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: htmltable.c:815
static HRESULT WINAPI HTMLTable_get_border(IHTMLTable *iface, VARIANT *p)
Definition: htmltable.c:172
static HRESULT WINAPI HTMLTable_get_width(IHTMLTable *iface, VARIANT *p)
Definition: htmltable.c:499
static HRESULT WINAPI HTMLTable_put_align(IHTMLTable *iface, BSTR v)
Definition: htmltable.c:413
static HRESULT WINAPI HTMLTable_Invoke(IHTMLTable *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: htmltable.c:142
static HRESULT WINAPI HTMLTable_get_caption(IHTMLTable *iface, IHTMLTableCaption **p)
Definition: htmltable.c:600
static HRESULT WINAPI HTMLTable3_GetTypeInfoCount(IHTMLTable3 *iface, UINT *pctinfo)
Definition: htmltable.c:890
static HRESULT WINAPI HTMLTable2_GetTypeInfo(IHTMLTable2 *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: htmltable.c:798
static HRESULT WINAPI HTMLTable3_get_summary(IHTMLTable3 *iface, BSTR *p)
Definition: htmltable.c:942
static HRESULT WINAPI HTMLTable_get_borderColorLight(IHTMLTable *iface, VARIANT *p)
Definition: htmltable.c:392
static HRESULT WINAPI HTMLTable_put_background(IHTMLTable *iface, BSTR v)
Definition: htmltable.c:310
static HRESULT WINAPI HTMLTable_put_cellPadding(IHTMLTable *iface, VARIANT v)
Definition: htmltable.c:274
static HRESULT WINAPI HTMLTable_put_border(IHTMLTable *iface, VARIANT v)
Definition: htmltable.c:165
static HRESULT WINAPI HTMLTable_put_cols(IHTMLTable *iface, LONG v)
Definition: htmltable.c:151
static const tid_t HTMLTable_iface_tids[]
Definition: htmltable.c:1050
static HRESULT WINAPI HTMLTable_createTHead(IHTMLTable *iface, IDispatch **head)
Definition: htmltable.c:607
static HRESULT WINAPI HTMLTable_put_bgColor(IHTMLTable *iface, VARIANT v)
Definition: htmltable.c:324
static ULONG WINAPI HTMLTable_AddRef(IHTMLTable *iface)
Definition: htmltable.c:105
static HRESULT WINAPI HTMLTable3_GetIDsOfNames(IHTMLTable3 *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: htmltable.c:904
static const IHTMLTable3Vtbl HTMLTable3Vtbl
Definition: htmltable.c:956
static HRESULT WINAPI HTMLTable_put_borderColor(IHTMLTable *iface, VARIANT v)
Definition: htmltable.c:371
static HRESULT WINAPI HTMLTable2_cells(IHTMLTable2 *iface, IHTMLElementCollection **p)
Definition: htmltable.c:838
static HRESULT WINAPI HTMLTable_get_cols(IHTMLTable *iface, LONG *p)
Definition: htmltable.c:158
static HRESULT WINAPI HTMLTable2_lastPage(IHTMLTable2 *iface)
Definition: htmltable.c:831
static ULONG WINAPI HTMLTable3_Release(IHTMLTable3 *iface)
Definition: htmltable.c:883
static HRESULT WINAPI HTMLTable2_QueryInterface(IHTMLTable2 *iface, REFIID riid, void **ppv)
Definition: htmltable.c:770
static HRESULT WINAPI HTMLTable_put_borderColorLight(IHTMLTable *iface, VARIANT v)
Definition: htmltable.c:385
static HRESULT WINAPI HTMLTable_put_borderColorDark(IHTMLTable *iface, VARIANT v)
Definition: htmltable.c:399
static HRESULT WINAPI HTMLTable_put_dataPageSize(IHTMLTable *iface, LONG v)
Definition: htmltable.c:538
static HRESULT WINAPI HTMLTable_get_tFoot(IHTMLTable *iface, IHTMLTableSection **p)
Definition: htmltable.c:573
static dispex_static_data_t HTMLTable_dispex
Definition: htmltable.c:1058
static HTMLTable * impl_from_IHTMLTable3(IHTMLTable3 *iface)
Definition: htmltable.c:41
static HRESULT WINAPI HTMLTable_get_onreadystatechange(IHTMLTable *iface, VARIANT *p)
Definition: htmltable.c:703
static HRESULT WINAPI HTMLTable_GetIDsOfNames(IHTMLTable *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: htmltable.c:133
static HRESULT WINAPI HTMLTable3_put_summary(IHTMLTable3 *iface, BSTR v)
Definition: htmltable.c:922
static const cpc_entry_t HTMLTable_cpc[]
Definition: htmltable.c:1024
static HRESULT WINAPI HTMLTable_nextPage(IHTMLTable *iface)
Definition: htmltable.c:552
HRESULT HTMLTable_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
Definition: htmltable.c:1065
static HTMLTable * impl_from_IHTMLTable2(IHTMLTable2 *iface)
Definition: htmltable.c:36
static HRESULT WINAPI HTMLTable_get_rules(IHTMLTable *iface, BSTR *p)
Definition: htmltable.c:219
static void HTMLTable_unlink(HTMLDOMNode *iface)
Definition: htmltable.c:1012
static HRESULT WINAPI HTMLTable2_GetTypeInfoCount(IHTMLTable2 *iface, UINT *pctinfo)
Definition: htmltable.c:792
static HRESULT WINAPI HTMLTable_get_cellSpacing(IHTMLTable *iface, VARIANT *p)
Definition: htmltable.c:260
static HRESULT WINAPI HTMLTable_refresh(IHTMLTable *iface)
Definition: htmltable.c:446
static HRESULT WINAPI HTMLTable_put_frame(IHTMLTable *iface, BSTR v)
Definition: htmltable.c:179
static HRESULT WINAPI HTMLTable_get_background(IHTMLTable *iface, BSTR *p)
Definition: htmltable.c:317
static HRESULT HTMLTable_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
Definition: htmltable.c:973
static HRESULT WINAPI HTMLTable_deleteTFoot(IHTMLTable *iface)
Definition: htmltable.c:628
static const NodeImplVtbl HTMLTableImplVtbl
Definition: htmltable.c:1030
static HRESULT WINAPI HTMLTable2_firstPage(IHTMLTable2 *iface)
Definition: htmltable.c:824
static HRESULT WINAPI HTMLTable_createCaption(IHTMLTable *iface, IHTMLTableCaption **caption)
Definition: htmltable.c:635
static HRESULT WINAPI HTMLTable_get_tBodies(IHTMLTable *iface, IHTMLElementCollection **p)
Definition: htmltable.c:580
static HRESULT WINAPI HTMLTable3_GetTypeInfo(IHTMLTable3 *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: htmltable.c:896
static ULONG WINAPI HTMLTable2_Release(IHTMLTable2 *iface)
Definition: htmltable.c:785
static HRESULT WINAPI HTMLTable_get_dataPageSize(IHTMLTable *iface, LONG *p)
Definition: htmltable.c:545
static HRESULT WINAPI HTMLTable_get_borderColor(IHTMLTable *iface, VARIANT *p)
Definition: htmltable.c:378
static HRESULT WINAPI HTMLTable_deleteCaption(IHTMLTable *iface)
Definition: htmltable.c:642
static HRESULT WINAPI HTMLTable_get_tHead(IHTMLTable *iface, IHTMLTableSection **p)
Definition: htmltable.c:566
static HRESULT var2str(const VARIANT *p, nsAString *nsstr)
Definition: htmltable.c:46
static HTMLTable * impl_from_IHTMLTable(IHTMLTable *iface)
Definition: htmltable.c:31
static HTMLTable * impl_from_HTMLDOMNode(HTMLDOMNode *iface)
Definition: htmltable.c:968
static HRESULT WINAPI HTMLTable_get_frame(IHTMLTable *iface, BSTR *p)
Definition: htmltable.c:198
static HRESULT WINAPI HTMLTable_createTFoot(IHTMLTable *iface, IDispatch **foot)
Definition: htmltable.c:621
static HRESULT WINAPI HTMLTable_put_width(IHTMLTable *iface, VARIANT v)
Definition: htmltable.c:473
static HRESULT WINAPI HTMLTable2_GetIDsOfNames(IHTMLTable2 *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: htmltable.c:806
static ULONG WINAPI HTMLTable3_AddRef(IHTMLTable3 *iface)
Definition: htmltable.c:876
static HRESULT WINAPI HTMLTable_get_bgColor(IHTMLTable *iface, VARIANT *p)
Definition: htmltable.c:345
HRESULT HTMLTableRow_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
Definition: htmltablerow.c:444
tid_t
Definition: ieframe.h:311
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_w
Definition: kernel32.h:32
static PVOID ptr
Definition: dispmode.c:27
static const char * debugstr_variant(const VARIANT *var)
Definition: container.c:46
HRESULT hres
Definition: protocol.c:465
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
static size_t elem
Definition: string.c:68
static LPOLESTR
Definition: stg_prop.c:27
static VARIANTARG static DISPID
Definition: ordinal.c:52
#define NS_OK
static HRESULT return_nsstr_variant(nsresult nsres, nsAString *nsstr, VARIANT *p)
void nsAString_Finish(nsAString *) DECLSPEC_HIDDEN
Definition: nsembed.c:836
UINT32 nsAString_GetData(const nsAString *, const PRUnichar **) DECLSPEC_HIDDEN
Definition: nsembed.c:831
#define HTMLELEMENT_TIDS
void nsAString_InitDepend(nsAString *, const PRUnichar *) DECLSPEC_HIDDEN
Definition: nsembed.c:826
BOOL nsAString_Init(nsAString *, const PRUnichar *) DECLSPEC_HIDDEN
Definition: nsembed.c:817
#define HTMLELEMENT_CPC
struct nsCycleCollectionTraversalCallback nsCycleCollectionTraversalCallback
#define NS_SUCCEEDED(res)
#define NS_FAILED(res)
HRESULT return_nsstr(nsresult, nsAString *, BSTR *) DECLSPEC_HIDDEN
Definition: nsembed.c:841
unsigned int UINT
Definition: ndis.h:50
WCHAR PRUnichar
Definition: nsiface.idl:48
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:238
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
#define V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
#define V_I4(A)
Definition: oleauto.h:247
#define V_R4(A)
Definition: oleauto.h:260
#define V_R8(A)
Definition: oleauto.h:262
const GUID IID_IDispatch
long LONG
Definition: pedump.c:60
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define isdigitW(n)
Definition: unicode.h:56
#define sprintfW
Definition: unicode.h:64
const WCHAR * str
DWORD LCID
Definition: nls.h:13
#define TRACE(s)
Definition: solgame.cpp:4
HTMLElement element
Definition: htmltable.c:22
IHTMLTable3 IHTMLTable3_iface
Definition: htmltable.c:26
IHTMLTable IHTMLTable_iface
Definition: htmltable.c:24
IHTMLTable2 IHTMLTable2_iface
Definition: htmltable.c:25
nsIDOMHTMLTableElement * nstable
Definition: htmltable.c:28
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
int ret
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531
#define WINAPI
Definition: msvc.h:6
__wchar_t WCHAR
Definition: xmlstorage.h:180