jscript: Added IActiveScriptParseProcedure2 stub implementation.
[wine.git] / dlls / jscript / jscript.c
blob0251b44f604c6edaf5b73a3d34edd89d44d43d18
1 /*
2 * Copyright 2008 Jacek Caban for CodeWeavers
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.
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.
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
19 #include "jscript.h"
20 #include "activscp.h"
22 #include "wine/debug.h"
24 WINE_DEFAULT_DEBUG_CHANNEL(jscript);
26 typedef struct {
27 const IActiveScriptVtbl *lpIActiveScriptVtbl;
28 const IActiveScriptParseVtbl *lpIActiveScriptParseVtbl;
29 const IActiveScriptParseProcedure2Vtbl *lpIActiveScriptParseProcedure2Vtbl;
30 const IActiveScriptPropertyVtbl *lpIActiveScriptPropertyVtbl;
32 LONG ref;
33 } JScript;
35 #define ACTSCRIPT(x) ((IActiveScript*) &(x)->lpIActiveScriptVtbl)
36 #define ASPARSE(x) ((IActiveScriptParse*) &(x)->lpIActiveScriptParseVtbl)
37 #define ASPARSEPROC(x) ((IActiveScriptParseProcedure2*) &(x)->lpIActiveScriptParseProcedure2Vtbl)
38 #define ACTSCPPROP(x) ((IActiveScriptProperty*) &(x)->lpIActiveScriptPropertyVtbl)
40 #define ACTSCRIPT_THIS(iface) DEFINE_THIS(JScript, IActiveScript, iface)
42 static HRESULT WINAPI JScript_QueryInterface(IActiveScript *iface, REFIID riid, void **ppv)
44 JScript *This = ACTSCRIPT_THIS(iface);
46 *ppv = NULL;
48 if(IsEqualGUID(riid, &IID_IUnknown)) {
49 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
50 *ppv = ACTSCRIPT(This);
51 }else if(IsEqualGUID(riid, &IID_IActiveScript)) {
52 TRACE("(%p)->(IID_IActiveScript %p)\n", This, ppv);
53 *ppv = ACTSCRIPT(This);
54 }else if(IsEqualGUID(riid, &IID_IActiveScriptParse)) {
55 TRACE("(%p)->(IID_IActiveScriptParse %p)\n", This, ppv);
56 *ppv = ASPARSE(This);
57 }else if(IsEqualGUID(riid, &IID_IActiveScriptParseProcedure)) {
58 TRACE("(%p)->(IID_IActiveScriptParseProcedure %p)\n", This, ppv);
59 *ppv = ASPARSEPROC(This);
60 }else if(IsEqualGUID(riid, &IID_IActiveScriptParseProcedure2)) {
61 TRACE("(%p)->(IID_IActiveScriptParseProcedure2 %p)\n", This, ppv);
62 *ppv = ASPARSEPROC(This);
63 }else if(IsEqualGUID(riid, &IID_IActiveScriptProperty)) {
64 TRACE("(%p)->(IID_IActiveScriptProperty %p)\n", This, ppv);
65 *ppv = ACTSCPPROP(This);
68 if(*ppv) {
69 IUnknown_AddRef((IUnknown*)*ppv);
70 return S_OK;
73 FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
74 return E_NOINTERFACE;
77 static ULONG WINAPI JScript_AddRef(IActiveScript *iface)
79 JScript *This = ACTSCRIPT_THIS(iface);
80 LONG ref = InterlockedIncrement(&This->ref);
82 TRACE("(%p) ref=%d\n", This, ref);
84 return ref;
87 static ULONG WINAPI JScript_Release(IActiveScript *iface)
89 JScript *This = ACTSCRIPT_THIS(iface);
90 LONG ref = InterlockedDecrement(&This->ref);
92 TRACE("(%p) ref=%d\n", iface, ref);
94 if(!ref)
95 heap_free(This);
97 return ref;
100 static HRESULT WINAPI JScript_SetScriptSite(IActiveScript *iface,
101 IActiveScriptSite *pass)
103 JScript *This = ACTSCRIPT_THIS(iface);
104 FIXME("(%p)->(%p)\n", This, pass);
105 return E_NOTIMPL;
108 static HRESULT WINAPI JScript_GetScriptSite(IActiveScript *iface, REFIID riid,
109 void **ppvObject)
111 JScript *This = ACTSCRIPT_THIS(iface);
112 FIXME("(%p)->()\n", This);
113 return E_NOTIMPL;
116 static HRESULT WINAPI JScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE ss)
118 JScript *This = ACTSCRIPT_THIS(iface);
119 FIXME("(%p)->(%d)\n", This, ss);
120 return E_NOTIMPL;
123 static HRESULT WINAPI JScript_GetScriptState(IActiveScript *iface, SCRIPTSTATE *pssState)
125 JScript *This = ACTSCRIPT_THIS(iface);
126 FIXME("(%p)->(%p)\n", This, pssState);
127 return E_NOTIMPL;
130 static HRESULT WINAPI JScript_Close(IActiveScript *iface)
132 JScript *This = ACTSCRIPT_THIS(iface);
133 FIXME("(%p)->()\n", This);
134 return E_NOTIMPL;
137 static HRESULT WINAPI JScript_AddNamedItem(IActiveScript *iface,
138 LPCOLESTR pstrName, DWORD dwFlags)
140 JScript *This = ACTSCRIPT_THIS(iface);
141 FIXME("(%p)->(%s %x)\n", This, debugstr_w(pstrName), dwFlags);
142 return E_NOTIMPL;
145 static HRESULT WINAPI JScript_AddTypeLib(IActiveScript *iface, REFGUID rguidTypeLib,
146 DWORD dwMajor, DWORD dwMinor, DWORD dwFlags)
148 JScript *This = ACTSCRIPT_THIS(iface);
149 FIXME("(%p)->()\n", This);
150 return E_NOTIMPL;
153 static HRESULT WINAPI JScript_GetScriptDispatch(IActiveScript *iface, LPCOLESTR pstrItemName,
154 IDispatch **ppdisp)
156 JScript *This = ACTSCRIPT_THIS(iface);
157 FIXME("(%p)->()\n", This);
158 return E_NOTIMPL;
161 static HRESULT WINAPI JScript_GetCurrentScriptThreadID(IActiveScript *iface,
162 SCRIPTTHREADID *pstridThread)
164 JScript *This = ACTSCRIPT_THIS(iface);
165 FIXME("(%p)->()\n", This);
166 return E_NOTIMPL;
169 static HRESULT WINAPI JScript_GetScriptThreadID(IActiveScript *iface,
170 DWORD dwWin32ThreadId, SCRIPTTHREADID *pstidThread)
172 JScript *This = ACTSCRIPT_THIS(iface);
173 FIXME("(%p)->()\n", This);
174 return E_NOTIMPL;
177 static HRESULT WINAPI JScript_GetScriptThreadState(IActiveScript *iface,
178 SCRIPTTHREADID stidThread, SCRIPTTHREADSTATE *pstsState)
180 JScript *This = ACTSCRIPT_THIS(iface);
181 FIXME("(%p)->()\n", This);
182 return E_NOTIMPL;
185 static HRESULT WINAPI JScript_InterruptScriptThread(IActiveScript *iface,
186 SCRIPTTHREADID stidThread, const EXCEPINFO *pexcepinfo, DWORD dwFlags)
188 JScript *This = ACTSCRIPT_THIS(iface);
189 FIXME("(%p)->()\n", This);
190 return E_NOTIMPL;
193 static HRESULT WINAPI JScript_Clone(IActiveScript *iface, IActiveScript **ppscript)
195 JScript *This = ACTSCRIPT_THIS(iface);
196 FIXME("(%p)->()\n", This);
197 return E_NOTIMPL;
200 #undef ACTSCRIPT_THIS
202 static const IActiveScriptVtbl JScriptVtbl = {
203 JScript_QueryInterface,
204 JScript_AddRef,
205 JScript_Release,
206 JScript_SetScriptSite,
207 JScript_GetScriptSite,
208 JScript_SetScriptState,
209 JScript_GetScriptState,
210 JScript_Close,
211 JScript_AddNamedItem,
212 JScript_AddTypeLib,
213 JScript_GetScriptDispatch,
214 JScript_GetCurrentScriptThreadID,
215 JScript_GetScriptThreadID,
216 JScript_GetScriptThreadState,
217 JScript_InterruptScriptThread,
218 JScript_Clone
221 #define ASPARSE_THIS(iface) DEFINE_THIS(JScript, IActiveScriptParse, iface)
223 static HRESULT WINAPI JScriptParse_QueryInterface(IActiveScriptParse *iface, REFIID riid, void **ppv)
225 JScript *This = ASPARSE_THIS(iface);
226 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
229 static ULONG WINAPI JScriptParse_AddRef(IActiveScriptParse *iface)
231 JScript *This = ASPARSE_THIS(iface);
232 return IActiveScript_AddRef(ACTSCRIPT(This));
235 static ULONG WINAPI JScriptParse_Release(IActiveScriptParse *iface)
237 JScript *This = ASPARSE_THIS(iface);
238 return IActiveScript_Release(ACTSCRIPT(This));
241 static HRESULT WINAPI JScriptParse_InitNew(IActiveScriptParse *iface)
243 JScript *This = ASPARSE_THIS(iface);
244 FIXME("(%p)\n", This);
245 return E_NOTIMPL;
248 static HRESULT WINAPI JScriptParse_AddScriptlet(IActiveScriptParse *iface,
249 LPCOLESTR pstrDefaultName, LPCOLESTR pstrCode, LPCOLESTR pstrItemName,
250 LPCOLESTR pstrSubItemName, LPCOLESTR pstrEventName, LPCOLESTR pstrDelimiter,
251 DWORD dwSourceContextCookie, ULONG ulStartingLineNumber, DWORD dwFlags,
252 BSTR *pbstrName, EXCEPINFO *pexcepinfo)
254 JScript *This = ASPARSE_THIS(iface);
255 FIXME("(%p)->(%s %s %s %s %s %s %x %u %x %p %p)\n", This, debugstr_w(pstrDefaultName),
256 debugstr_w(pstrCode), debugstr_w(pstrItemName), debugstr_w(pstrSubItemName),
257 debugstr_w(pstrEventName), debugstr_w(pstrDelimiter), dwSourceContextCookie,
258 ulStartingLineNumber, dwFlags, pbstrName, pexcepinfo);
259 return E_NOTIMPL;
262 static HRESULT WINAPI JScriptParse_ParseScriptText(IActiveScriptParse *iface,
263 LPCOLESTR pstrCode, LPCOLESTR pstrItemName, IUnknown *punkContext,
264 LPCOLESTR pstrDelimiter, DWORD dwSourceContextCookie, ULONG ulStartingLine,
265 DWORD dwFlags, VARIANT *pvarResult, EXCEPINFO *pexcepinfo)
267 JScript *This = ASPARSE_THIS(iface);
268 FIXME("(%p)->(%s %s %p %s %x %u %x %p %p)\n", This, debugstr_w(pstrCode),
269 debugstr_w(pstrItemName), punkContext, debugstr_w(pstrDelimiter),
270 dwSourceContextCookie, ulStartingLine, dwFlags, pvarResult, pexcepinfo);
271 return E_NOTIMPL;
274 #undef ASPARSE_THIS
276 static const IActiveScriptParseVtbl JScriptParseVtbl = {
277 JScriptParse_QueryInterface,
278 JScriptParse_AddRef,
279 JScriptParse_Release,
280 JScriptParse_InitNew,
281 JScriptParse_AddScriptlet,
282 JScriptParse_ParseScriptText
285 #define ASPARSEPROC_THIS(iface) DEFINE_THIS(JScript, IActiveScriptParse, iface)
287 static HRESULT WINAPI JScriptParseProcedure_QueryInterface(IActiveScriptParseProcedure2 *iface, REFIID riid, void **ppv)
289 JScript *This = ASPARSEPROC_THIS(iface);
290 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
293 static ULONG WINAPI JScriptParseProcedure_AddRef(IActiveScriptParseProcedure2 *iface)
295 JScript *This = ASPARSEPROC_THIS(iface);
296 return IActiveScript_AddRef(ACTSCRIPT(This));
299 static ULONG WINAPI JScriptParseProcedure_Release(IActiveScriptParseProcedure2 *iface)
301 JScript *This = ASPARSEPROC_THIS(iface);
302 return IActiveScript_Release(ACTSCRIPT(This));
305 static HRESULT WINAPI JScriptParseProcedure_ParseProcedureText(IActiveScriptParseProcedure2 *iface,
306 LPCOLESTR pstrCode, LPCOLESTR pstrFormalParams, LPCOLESTR pstrProcedureName,
307 LPCOLESTR pstrItemName, IUnknown *punkContext, LPCOLESTR pstrDelimiter,
308 DWORD dwSourceContextCookie, ULONG ulStartingLineNumber, DWORD dwFlags, IDispatch **ppdisp)
310 JScript *This = ASPARSEPROC_THIS(iface);
311 FIXME("(%p)->()\n", This);
312 return E_NOTIMPL;
315 #undef ASPARSEPROC_THIS
317 static const IActiveScriptParseProcedure2Vtbl JScriptParseProcedureVtbl = {
318 JScriptParseProcedure_QueryInterface,
319 JScriptParseProcedure_AddRef,
320 JScriptParseProcedure_Release,
321 JScriptParseProcedure_ParseProcedureText,
324 #define ACTSCPPROP_THIS(iface) DEFINE_THIS(JScript, IActiveScriptProperty, iface)
326 static HRESULT WINAPI JScriptProperty_QueryInterface(IActiveScriptProperty *iface, REFIID riid, void **ppv)
328 JScript *This = ACTSCPPROP_THIS(iface);
329 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
332 static ULONG WINAPI JScriptProperty_AddRef(IActiveScriptProperty *iface)
334 JScript *This = ACTSCPPROP_THIS(iface);
335 return IActiveScript_AddRef(ACTSCRIPT(This));
338 static ULONG WINAPI JScriptProperty_Release(IActiveScriptProperty *iface)
340 JScript *This = ACTSCPPROP_THIS(iface);
341 return IActiveScript_Release(ACTSCRIPT(This));
344 static HRESULT WINAPI JScriptProperty_GetProperty(IActiveScriptProperty *iface, DWORD dwProperty,
345 VARIANT *pvarIndex, VARIANT *pvarValue)
347 JScript *This = ACTSCPPROP_THIS(iface);
348 FIXME("(%p)->(%x %p %p)\n", This, dwProperty, pvarIndex, pvarValue);
349 return E_NOTIMPL;
352 static HRESULT WINAPI JScriptProperty_SetProperty(IActiveScriptProperty *iface, DWORD dwProperty,
353 VARIANT *pvarIndex, VARIANT *pvarValue)
355 JScript *This = ACTSCPPROP_THIS(iface);
356 FIXME("(%p)->(%x %p %p)\n", This, dwProperty, pvarIndex, pvarValue);
357 return E_NOTIMPL;
360 #undef ACTSCPPROP_THIS
362 static const IActiveScriptPropertyVtbl JScriptPropertyVtbl = {
363 JScriptProperty_QueryInterface,
364 JScriptProperty_AddRef,
365 JScriptProperty_Release,
366 JScriptProperty_GetProperty,
367 JScriptProperty_SetProperty
370 HRESULT WINAPI JScriptFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter,
371 REFIID riid, void **ppv)
373 JScript *ret;
374 HRESULT hres;
376 TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppv);
378 ret = heap_alloc(sizeof(*ret));
380 ret->lpIActiveScriptVtbl = &JScriptVtbl;
381 ret->lpIActiveScriptParseVtbl = &JScriptParseVtbl;
382 ret->lpIActiveScriptParseProcedure2Vtbl = &JScriptParseProcedureVtbl;
383 ret->lpIActiveScriptPropertyVtbl = &JScriptPropertyVtbl;
384 ret->ref = 1;
386 hres = IActiveScript_QueryInterface(ACTSCRIPT(ret), riid, ppv);
387 IActiveScript_Release(ACTSCRIPT(ret));
388 return hres;