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
23 #include "wine/debug.h"
25 WINE_DEFAULT_DEBUG_CHANNEL(jscript);
28 const IActiveScriptVtbl *lpIActiveScriptVtbl;
29 const IActiveScriptParseVtbl *lpIActiveScriptParseVtbl;
30 const IActiveScriptParseProcedure2Vtbl *lpIActiveScriptParseProcedure2Vtbl;
31 const IActiveScriptPropertyVtbl *lpIActiveScriptPropertyVtbl;
32 const IObjectSafetyVtbl *lpIObjectSafetyVtbl;
37 #define ACTSCRIPT(x) ((IActiveScript*) &(x)->lpIActiveScriptVtbl)
38 #define ASPARSE(x) ((IActiveScriptParse*) &(x)->lpIActiveScriptParseVtbl)
39 #define ASPARSEPROC(x) ((IActiveScriptParseProcedure2*) &(x)->lpIActiveScriptParseProcedure2Vtbl)
40 #define ACTSCPPROP(x) ((IActiveScriptProperty*) &(x)->lpIActiveScriptPropertyVtbl)
41 #define OBJSAFETY(x) ((IObjectSafety*) &(x)->lpIObjectSafetyVtbl)
43 #define ACTSCRIPT_THIS(iface) DEFINE_THIS(JScript, IActiveScript, iface)
45 static HRESULT WINAPI JScript_QueryInterface(IActiveScript *iface, REFIID riid, void **ppv)
47 JScript *This = ACTSCRIPT_THIS(iface);
51 if(IsEqualGUID(riid, &IID_IUnknown)) {
52 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
53 *ppv = ACTSCRIPT(This);
54 }else if(IsEqualGUID(riid, &IID_IActiveScript)) {
55 TRACE("(%p)->(IID_IActiveScript %p)\n", This, ppv);
56 *ppv = ACTSCRIPT(This);
57 }else if(IsEqualGUID(riid, &IID_IActiveScriptParse)) {
58 TRACE("(%p)->(IID_IActiveScriptParse %p)\n", This, ppv);
60 }else if(IsEqualGUID(riid, &IID_IActiveScriptParseProcedure)) {
61 TRACE("(%p)->(IID_IActiveScriptParseProcedure %p)\n", This, ppv);
62 *ppv = ASPARSEPROC(This);
63 }else if(IsEqualGUID(riid, &IID_IActiveScriptParseProcedure2)) {
64 TRACE("(%p)->(IID_IActiveScriptParseProcedure2 %p)\n", This, ppv);
65 *ppv = ASPARSEPROC(This);
66 }else if(IsEqualGUID(riid, &IID_IActiveScriptProperty)) {
67 TRACE("(%p)->(IID_IActiveScriptProperty %p)\n", This, ppv);
68 *ppv = ACTSCPPROP(This);
69 }else if(IsEqualGUID(riid, &IID_IObjectSafety)) {
70 TRACE("(%p)->(IID_IObjectSafety %p)\n", This, ppv);
71 *ppv = OBJSAFETY(This);
75 IUnknown_AddRef((IUnknown*)*ppv);
79 FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
83 static ULONG WINAPI JScript_AddRef(IActiveScript *iface)
85 JScript *This = ACTSCRIPT_THIS(iface);
86 LONG ref = InterlockedIncrement(&This->ref);
88 TRACE("(%p) ref=%d\n", This, ref);
93 static ULONG WINAPI JScript_Release(IActiveScript *iface)
95 JScript *This = ACTSCRIPT_THIS(iface);
96 LONG ref = InterlockedDecrement(&This->ref);
98 TRACE("(%p) ref=%d\n", iface, ref);
108 static HRESULT WINAPI JScript_SetScriptSite(IActiveScript *iface,
109 IActiveScriptSite *pass)
111 JScript *This = ACTSCRIPT_THIS(iface);
112 FIXME("(%p)->(%p)\n", This, pass);
116 static HRESULT WINAPI JScript_GetScriptSite(IActiveScript *iface, REFIID riid,
119 JScript *This = ACTSCRIPT_THIS(iface);
120 FIXME("(%p)->()\n", This);
124 static HRESULT WINAPI JScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE ss)
126 JScript *This = ACTSCRIPT_THIS(iface);
127 FIXME("(%p)->(%d)\n", This, ss);
131 static HRESULT WINAPI JScript_GetScriptState(IActiveScript *iface, SCRIPTSTATE *pssState)
133 JScript *This = ACTSCRIPT_THIS(iface);
134 FIXME("(%p)->(%p)\n", This, pssState);
138 static HRESULT WINAPI JScript_Close(IActiveScript *iface)
140 JScript *This = ACTSCRIPT_THIS(iface);
141 FIXME("(%p)->()\n", This);
145 static HRESULT WINAPI JScript_AddNamedItem(IActiveScript *iface,
146 LPCOLESTR pstrName, DWORD dwFlags)
148 JScript *This = ACTSCRIPT_THIS(iface);
149 FIXME("(%p)->(%s %x)\n", This, debugstr_w(pstrName), dwFlags);
153 static HRESULT WINAPI JScript_AddTypeLib(IActiveScript *iface, REFGUID rguidTypeLib,
154 DWORD dwMajor, DWORD dwMinor, DWORD dwFlags)
156 JScript *This = ACTSCRIPT_THIS(iface);
157 FIXME("(%p)->()\n", This);
161 static HRESULT WINAPI JScript_GetScriptDispatch(IActiveScript *iface, LPCOLESTR pstrItemName,
164 JScript *This = ACTSCRIPT_THIS(iface);
165 FIXME("(%p)->()\n", This);
169 static HRESULT WINAPI JScript_GetCurrentScriptThreadID(IActiveScript *iface,
170 SCRIPTTHREADID *pstridThread)
172 JScript *This = ACTSCRIPT_THIS(iface);
173 FIXME("(%p)->()\n", This);
177 static HRESULT WINAPI JScript_GetScriptThreadID(IActiveScript *iface,
178 DWORD dwWin32ThreadId, SCRIPTTHREADID *pstidThread)
180 JScript *This = ACTSCRIPT_THIS(iface);
181 FIXME("(%p)->()\n", This);
185 static HRESULT WINAPI JScript_GetScriptThreadState(IActiveScript *iface,
186 SCRIPTTHREADID stidThread, SCRIPTTHREADSTATE *pstsState)
188 JScript *This = ACTSCRIPT_THIS(iface);
189 FIXME("(%p)->()\n", This);
193 static HRESULT WINAPI JScript_InterruptScriptThread(IActiveScript *iface,
194 SCRIPTTHREADID stidThread, const EXCEPINFO *pexcepinfo, DWORD dwFlags)
196 JScript *This = ACTSCRIPT_THIS(iface);
197 FIXME("(%p)->()\n", This);
201 static HRESULT WINAPI JScript_Clone(IActiveScript *iface, IActiveScript **ppscript)
203 JScript *This = ACTSCRIPT_THIS(iface);
204 FIXME("(%p)->()\n", This);
208 #undef ACTSCRIPT_THIS
210 static const IActiveScriptVtbl JScriptVtbl = {
211 JScript_QueryInterface,
214 JScript_SetScriptSite,
215 JScript_GetScriptSite,
216 JScript_SetScriptState,
217 JScript_GetScriptState,
219 JScript_AddNamedItem,
221 JScript_GetScriptDispatch,
222 JScript_GetCurrentScriptThreadID,
223 JScript_GetScriptThreadID,
224 JScript_GetScriptThreadState,
225 JScript_InterruptScriptThread,
229 #define ASPARSE_THIS(iface) DEFINE_THIS(JScript, IActiveScriptParse, iface)
231 static HRESULT WINAPI JScriptParse_QueryInterface(IActiveScriptParse *iface, REFIID riid, void **ppv)
233 JScript *This = ASPARSE_THIS(iface);
234 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
237 static ULONG WINAPI JScriptParse_AddRef(IActiveScriptParse *iface)
239 JScript *This = ASPARSE_THIS(iface);
240 return IActiveScript_AddRef(ACTSCRIPT(This));
243 static ULONG WINAPI JScriptParse_Release(IActiveScriptParse *iface)
245 JScript *This = ASPARSE_THIS(iface);
246 return IActiveScript_Release(ACTSCRIPT(This));
249 static HRESULT WINAPI JScriptParse_InitNew(IActiveScriptParse *iface)
251 JScript *This = ASPARSE_THIS(iface);
252 FIXME("(%p)\n", This);
256 static HRESULT WINAPI JScriptParse_AddScriptlet(IActiveScriptParse *iface,
257 LPCOLESTR pstrDefaultName, LPCOLESTR pstrCode, LPCOLESTR pstrItemName,
258 LPCOLESTR pstrSubItemName, LPCOLESTR pstrEventName, LPCOLESTR pstrDelimiter,
259 DWORD dwSourceContextCookie, ULONG ulStartingLineNumber, DWORD dwFlags,
260 BSTR *pbstrName, EXCEPINFO *pexcepinfo)
262 JScript *This = ASPARSE_THIS(iface);
263 FIXME("(%p)->(%s %s %s %s %s %s %x %u %x %p %p)\n", This, debugstr_w(pstrDefaultName),
264 debugstr_w(pstrCode), debugstr_w(pstrItemName), debugstr_w(pstrSubItemName),
265 debugstr_w(pstrEventName), debugstr_w(pstrDelimiter), dwSourceContextCookie,
266 ulStartingLineNumber, dwFlags, pbstrName, pexcepinfo);
270 static HRESULT WINAPI JScriptParse_ParseScriptText(IActiveScriptParse *iface,
271 LPCOLESTR pstrCode, LPCOLESTR pstrItemName, IUnknown *punkContext,
272 LPCOLESTR pstrDelimiter, DWORD dwSourceContextCookie, ULONG ulStartingLine,
273 DWORD dwFlags, VARIANT *pvarResult, EXCEPINFO *pexcepinfo)
275 JScript *This = ASPARSE_THIS(iface);
276 FIXME("(%p)->(%s %s %p %s %x %u %x %p %p)\n", This, debugstr_w(pstrCode),
277 debugstr_w(pstrItemName), punkContext, debugstr_w(pstrDelimiter),
278 dwSourceContextCookie, ulStartingLine, dwFlags, pvarResult, pexcepinfo);
284 static const IActiveScriptParseVtbl JScriptParseVtbl = {
285 JScriptParse_QueryInterface,
287 JScriptParse_Release,
288 JScriptParse_InitNew,
289 JScriptParse_AddScriptlet,
290 JScriptParse_ParseScriptText
293 #define ASPARSEPROC_THIS(iface) DEFINE_THIS(JScript, IActiveScriptParse, iface)
295 static HRESULT WINAPI JScriptParseProcedure_QueryInterface(IActiveScriptParseProcedure2 *iface, REFIID riid, void **ppv)
297 JScript *This = ASPARSEPROC_THIS(iface);
298 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
301 static ULONG WINAPI JScriptParseProcedure_AddRef(IActiveScriptParseProcedure2 *iface)
303 JScript *This = ASPARSEPROC_THIS(iface);
304 return IActiveScript_AddRef(ACTSCRIPT(This));
307 static ULONG WINAPI JScriptParseProcedure_Release(IActiveScriptParseProcedure2 *iface)
309 JScript *This = ASPARSEPROC_THIS(iface);
310 return IActiveScript_Release(ACTSCRIPT(This));
313 static HRESULT WINAPI JScriptParseProcedure_ParseProcedureText(IActiveScriptParseProcedure2 *iface,
314 LPCOLESTR pstrCode, LPCOLESTR pstrFormalParams, LPCOLESTR pstrProcedureName,
315 LPCOLESTR pstrItemName, IUnknown *punkContext, LPCOLESTR pstrDelimiter,
316 DWORD dwSourceContextCookie, ULONG ulStartingLineNumber, DWORD dwFlags, IDispatch **ppdisp)
318 JScript *This = ASPARSEPROC_THIS(iface);
319 FIXME("(%p)->()\n", This);
323 #undef ASPARSEPROC_THIS
325 static const IActiveScriptParseProcedure2Vtbl JScriptParseProcedureVtbl = {
326 JScriptParseProcedure_QueryInterface,
327 JScriptParseProcedure_AddRef,
328 JScriptParseProcedure_Release,
329 JScriptParseProcedure_ParseProcedureText,
332 #define ACTSCPPROP_THIS(iface) DEFINE_THIS(JScript, IActiveScriptProperty, iface)
334 static HRESULT WINAPI JScriptProperty_QueryInterface(IActiveScriptProperty *iface, REFIID riid, void **ppv)
336 JScript *This = ACTSCPPROP_THIS(iface);
337 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
340 static ULONG WINAPI JScriptProperty_AddRef(IActiveScriptProperty *iface)
342 JScript *This = ACTSCPPROP_THIS(iface);
343 return IActiveScript_AddRef(ACTSCRIPT(This));
346 static ULONG WINAPI JScriptProperty_Release(IActiveScriptProperty *iface)
348 JScript *This = ACTSCPPROP_THIS(iface);
349 return IActiveScript_Release(ACTSCRIPT(This));
352 static HRESULT WINAPI JScriptProperty_GetProperty(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);
360 static HRESULT WINAPI JScriptProperty_SetProperty(IActiveScriptProperty *iface, DWORD dwProperty,
361 VARIANT *pvarIndex, VARIANT *pvarValue)
363 JScript *This = ACTSCPPROP_THIS(iface);
364 FIXME("(%p)->(%x %p %p)\n", This, dwProperty, pvarIndex, pvarValue);
368 #undef ACTSCPPROP_THIS
370 static const IActiveScriptPropertyVtbl JScriptPropertyVtbl = {
371 JScriptProperty_QueryInterface,
372 JScriptProperty_AddRef,
373 JScriptProperty_Release,
374 JScriptProperty_GetProperty,
375 JScriptProperty_SetProperty
378 #define OBJSAFETY_THIS(iface) DEFINE_THIS(JScript, IObjectSafety, iface)
380 static HRESULT WINAPI JScriptSafety_QueryInterface(IObjectSafety *iface, REFIID riid, void **ppv)
382 JScript *This = OBJSAFETY_THIS(iface);
383 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
386 static ULONG WINAPI JScriptSafety_AddRef(IObjectSafety *iface)
388 JScript *This = OBJSAFETY_THIS(iface);
389 return IActiveScript_AddRef(ACTSCRIPT(This));
392 static ULONG WINAPI JScriptSafety_Release(IObjectSafety *iface)
394 JScript *This = OBJSAFETY_THIS(iface);
395 return IActiveScript_Release(ACTSCRIPT(This));
398 static HRESULT WINAPI JScriptSafety_GetInterfaceSafetyOptions(IObjectSafety *iface, REFIID riid,
399 DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions)
401 JScript *This = OBJSAFETY_THIS(iface);
402 FIXME("(%p)->(%s %p %p)\n", This, debugstr_guid(riid), pdwSupportedOptions, pdwEnabledOptions);
406 static HRESULT WINAPI JScriptSafety_SetInterfaceSafetyOptions(IObjectSafety *iface, REFIID riid,
407 DWORD dwOptionSetMask, DWORD dwEnabledOptions)
409 JScript *This = OBJSAFETY_THIS(iface);
410 FIXME("(%p)->(%s %x %x)\n", This, debugstr_guid(riid), dwOptionSetMask, dwEnabledOptions);
414 #undef OBJSAFETY_THIS
416 static const IObjectSafetyVtbl JScriptSafetyVtbl = {
417 JScriptSafety_QueryInterface,
418 JScriptSafety_AddRef,
419 JScriptSafety_Release,
420 JScriptSafety_GetInterfaceSafetyOptions,
421 JScriptSafety_SetInterfaceSafetyOptions
424 HRESULT WINAPI JScriptFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter,
425 REFIID riid, void **ppv)
430 TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppv);
434 ret = heap_alloc(sizeof(*ret));
436 ret->lpIActiveScriptVtbl = &JScriptVtbl;
437 ret->lpIActiveScriptParseVtbl = &JScriptParseVtbl;
438 ret->lpIActiveScriptParseProcedure2Vtbl = &JScriptParseProcedureVtbl;
439 ret->lpIActiveScriptPropertyVtbl = &JScriptPropertyVtbl;
440 ret->lpIObjectSafetyVtbl = &JScriptSafetyVtbl;
443 hres = IActiveScript_QueryInterface(ACTSCRIPT(ret), riid, ppv);
444 IActiveScript_Release(ACTSCRIPT(ret));