ReactOS  0.4.14-dev-114-gc8cbd56
htmlgeneric.c
Go to the documentation of this file.
1 /*
2  * Copyright 2008 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 
21 typedef struct {
23 
24  IHTMLGenericElement IHTMLGenericElement_iface;
26 
27 static inline HTMLGenericElement *impl_from_IHTMLGenericElement(IHTMLGenericElement *iface)
28 {
29  return CONTAINING_RECORD(iface, HTMLGenericElement, IHTMLGenericElement_iface);
30 }
31 
32 static HRESULT WINAPI HTMLGenericElement_QueryInterface(IHTMLGenericElement *iface, REFIID riid, void **ppv)
33 {
35 
36  return IHTMLDOMNode_QueryInterface(&This->element.node.IHTMLDOMNode_iface, riid, ppv);
37 }
38 
39 static ULONG WINAPI HTMLGenericElement_AddRef(IHTMLGenericElement *iface)
40 {
42 
43  return IHTMLDOMNode_AddRef(&This->element.node.IHTMLDOMNode_iface);
44 }
45 
46 static ULONG WINAPI HTMLGenericElement_Release(IHTMLGenericElement *iface)
47 {
49 
50  return IHTMLDOMNode_Release(&This->element.node.IHTMLDOMNode_iface);
51 }
52 
53 static HRESULT WINAPI HTMLGenericElement_GetTypeInfoCount(IHTMLGenericElement *iface, UINT *pctinfo)
54 {
56  return IDispatchEx_GetTypeInfoCount(&This->element.node.event_target.dispex.IDispatchEx_iface, pctinfo);
57 }
58 
59 static HRESULT WINAPI HTMLGenericElement_GetTypeInfo(IHTMLGenericElement *iface, UINT iTInfo,
60  LCID lcid, ITypeInfo **ppTInfo)
61 {
63  return IDispatchEx_GetTypeInfo(&This->element.node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid,
64  ppTInfo);
65 }
66 
67 static HRESULT WINAPI HTMLGenericElement_GetIDsOfNames(IHTMLGenericElement *iface, REFIID riid,
68  LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
69 {
71  return IDispatchEx_GetIDsOfNames(&This->element.node.event_target.dispex.IDispatchEx_iface, riid, rgszNames,
72  cNames, lcid, rgDispId);
73 }
74 
75 static HRESULT WINAPI HTMLGenericElement_Invoke(IHTMLGenericElement *iface, DISPID dispIdMember,
76  REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
77  VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
78 {
80  return IDispatchEx_Invoke(&This->element.node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid,
81  lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
82 }
83 
84 static HRESULT WINAPI HTMLGenericElement_get_recordset(IHTMLGenericElement *iface, IDispatch **p)
85 {
87  FIXME("(%p)->(%p)\n", This, p);
88  return E_NOTIMPL;
89 }
90 
91 static HRESULT WINAPI HTMLGenericElement_namedRecordset(IHTMLGenericElement *iface,
92  BSTR dataMember, VARIANT *hierarchy, IDispatch **ppRecordset)
93 {
95  FIXME("(%p)->(%s %p %p)\n", This, debugstr_w(dataMember), hierarchy, ppRecordset);
96  return E_NOTIMPL;
97 }
98 
99 static const IHTMLGenericElementVtbl HTMLGenericElementVtbl = {
109 };
110 
112 {
113  return CONTAINING_RECORD(iface, HTMLGenericElement, element.node);
114 }
115 
117 {
119 
120  *ppv = NULL;
121 
122  if(IsEqualGUID(&IID_IHTMLGenericElement, riid)) {
123  TRACE("(%p)->(IID_IHTMLGenericElement %p)\n", This, ppv);
124  *ppv = &This->IHTMLGenericElement_iface;
125  }else {
126  return HTMLElement_QI(&This->element.node, riid, ppv);
127  }
128 
129  IUnknown_AddRef((IUnknown*)*ppv);
130  return S_OK;
131 }
132 
134 {
136 
137  HTMLElement_destructor(&This->element.node);
138 }
139 
147 };
148 
151  IHTMLGenericElement_tid,
152  0
153 };
154 
156  NULL,
157  DispHTMLGenericElement_tid,
158  NULL,
160 };
161 
163 {
165 
166  ret = heap_alloc_zero(sizeof(HTMLGenericElement));
167  if(!ret)
168  return E_OUTOFMEMORY;
169 
170  ret->IHTMLGenericElement_iface.lpVtbl = &HTMLGenericElementVtbl;
171  ret->element.node.vtbl = &HTMLGenericElementImplVtbl;
172 
173  HTMLElement_Init(&ret->element, doc, nselem, &HTMLGenericElement_dispex);
174 
175  *elem = &ret->element;
176  return S_OK;
177 }
static HRESULT WINAPI HTMLGenericElement_namedRecordset(IHTMLGenericElement *iface, BSTR dataMember, VARIANT *hierarchy, IDispatch **ppRecordset)
Definition: htmlgeneric.c:91
static const IHTMLGenericElementVtbl HTMLGenericElementVtbl
Definition: htmlgeneric.c:99
IHTMLGenericElement IHTMLGenericElement_iface
Definition: htmlgeneric.c:24
#define REFIID
Definition: guiddef.h:118
HRESULT HTMLElement_handle_event(HTMLDOMNode *iface, DWORD eid, nsIDOMEvent *event, BOOL *prevent_default)
Definition: htmlelem.c:3815
const cpc_entry_t HTMLElement_cpc[]
Definition: htmlelem.c:3847
REFIID riid
Definition: precomp.h:44
tid_t
Definition: ieframe.h:311
HRESULT HTMLElement_get_attr_col(HTMLDOMNode *iface, HTMLAttributeCollection **ac)
Definition: htmlelem.c:4827
static ULONG WINAPI HTMLGenericElement_AddRef(IHTMLGenericElement *iface)
Definition: htmlgeneric.c:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
Definition: htmlelem.c:3738
static const NodeImplVtbl HTMLGenericElementImplVtbl
Definition: htmlgeneric.c:140
DWORD LCID
Definition: nls.h:13
OLECHAR * BSTR
Definition: compat.h:1934
static const h_entry hierarchy[]
Definition: dialog.c:68
static LPOLESTR
Definition: stg_prop.c:27
static ULONG WINAPI HTMLGenericElement_Release(IHTMLGenericElement *iface)
Definition: htmlgeneric.c:46
static HRESULT WINAPI HTMLGenericElement_get_recordset(IHTMLGenericElement *iface, IDispatch **p)
Definition: htmlgeneric.c:84
#define HTMLELEMENT_TIDS
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define debugstr_w
Definition: kernel32.h:32
static size_t elem
Definition: string.c:68
#define FIXME(fmt,...)
Definition: debug.h:110
smooth NULL
Definition: ftsmooth.c:416
static HRESULT WINAPI HTMLGenericElement_GetIDsOfNames(IHTMLGenericElement *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: htmlgeneric.c:67
static HRESULT WINAPI HTMLGenericElement_GetTypeInfoCount(IHTMLGenericElement *iface, UINT *pctinfo)
Definition: htmlgeneric.c:53
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
static HRESULT WINAPI HTMLGenericElement_Invoke(IHTMLGenericElement *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: htmlgeneric.c:75
HRESULT HTMLGenericElement_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTMLElement **elem)
Definition: htmlgeneric.c:162
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define WINAPI
Definition: msvc.h:8
static HRESULT WINAPI HTMLGenericElement_QueryInterface(IHTMLGenericElement *iface, REFIID riid, void **ppv)
Definition: htmlgeneric.c:32
unsigned short WORD
Definition: ntddk_ex.h:93
void HTMLElement_destructor(HTMLDOMNode *iface)
Definition: htmlelem.c:3764
static HTMLGenericElement * impl_from_HTMLDOMNode(HTMLDOMNode *iface)
Definition: htmlgeneric.c:111
static HRESULT HTMLGenericElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
Definition: htmlgeneric.c:116
static HTMLGenericElement * impl_from_IHTMLGenericElement(IHTMLGenericElement *iface)
Definition: htmlgeneric.c:27
int ret
void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, dispex_static_data_t *dispex_data)
Definition: htmlelem.c:4008
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:519
HTMLElement element
Definition: htmlgeneric.c:22
HRESULT HTMLElement_clone(HTMLDOMNode *iface, nsIDOMNode *nsnode, HTMLDOMNode **ret)
Definition: htmlelem.c:3793
struct stdole::EXCEPINFO EXCEPINFO
#define S_OK
Definition: intsafe.h:59
static VARIANTARG static DISPID
Definition: ordinal.c:49
#define E_NOTIMPL
Definition: ddrawi.h:99
static void HTMLGenericElement_destructor(HTMLDOMNode *iface)
Definition: htmlgeneric.c:133
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4021
struct stdole::DISPPARAMS DISPPARAMS
unsigned int ULONG
Definition: retypes.h:1
static dispex_static_data_t HTMLGenericElement_dispex
Definition: htmlgeneric.c:155
static HRESULT WINAPI HTMLGenericElement_GetTypeInfo(IHTMLGenericElement *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: htmlgeneric.c:59
GLfloat GLfloat p
Definition: glext.h:8902
static const tid_t HTMLGenericElement_iface_tids[]
Definition: htmlgeneric.c:149