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);
106 static HRESULT WINAPI JScript_SetScriptSite(IActiveScript *iface,
107 IActiveScriptSite *pass)
109 JScript *This = ACTSCRIPT_THIS(iface);
110 FIXME("(%p)->(%p)\n", This, pass);
114 static HRESULT WINAPI JScript_GetScriptSite(IActiveScript *iface, REFIID riid,
117 JScript *This = ACTSCRIPT_THIS(iface);
118 FIXME("(%p)->()\n", This);
122 static HRESULT WINAPI JScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE ss)
124 JScript *This = ACTSCRIPT_THIS(iface);
125 FIXME("(%p)->(%d)\n", This, ss);
129 static HRESULT WINAPI JScript_GetScriptState(IActiveScript *iface, SCRIPTSTATE *pssState)
131 JScript *This = ACTSCRIPT_THIS(iface);
132 FIXME("(%p)->(%p)\n", This, pssState);
136 static HRESULT WINAPI JScript_Close(IActiveScript *iface)
138 JScript *This = ACTSCRIPT_THIS(iface);
139 FIXME("(%p)->()\n", This);
143 static HRESULT WINAPI JScript_AddNamedItem(IActiveScript *iface,
144 LPCOLESTR pstrName, DWORD dwFlags)
146 JScript *This = ACTSCRIPT_THIS(iface);
147 FIXME("(%p)->(%s %x)\n", This, debugstr_w(pstrName), dwFlags);
151 static HRESULT WINAPI JScript_AddTypeLib(IActiveScript *iface, REFGUID rguidTypeLib,
152 DWORD dwMajor, DWORD dwMinor, DWORD dwFlags)
154 JScript *This = ACTSCRIPT_THIS(iface);
155 FIXME("(%p)->()\n", This);
159 static HRESULT WINAPI JScript_GetScriptDispatch(IActiveScript *iface, LPCOLESTR pstrItemName,
162 JScript *This = ACTSCRIPT_THIS(iface);
163 FIXME("(%p)->()\n", This);
167 static HRESULT WINAPI JScript_GetCurrentScriptThreadID(IActiveScript *iface,
168 SCRIPTTHREADID *pstridThread)
170 JScript *This = ACTSCRIPT_THIS(iface);
171 FIXME("(%p)->()\n", This);
175 static HRESULT WINAPI JScript_GetScriptThreadID(IActiveScript *iface,
176 DWORD dwWin32ThreadId, SCRIPTTHREADID *pstidThread)
178 JScript *This = ACTSCRIPT_THIS(iface);
179 FIXME("(%p)->()\n", This);
183 static HRESULT WINAPI JScript_GetScriptThreadState(IActiveScript *iface,
184 SCRIPTTHREADID stidThread, SCRIPTTHREADSTATE *pstsState)
186 JScript *This = ACTSCRIPT_THIS(iface);
187 FIXME("(%p)->()\n", This);
191 static HRESULT WINAPI JScript_InterruptScriptThread(IActiveScript *iface,
192 SCRIPTTHREADID stidThread, const EXCEPINFO *pexcepinfo, DWORD dwFlags)
194 JScript *This = ACTSCRIPT_THIS(iface);
195 FIXME("(%p)->()\n", This);
199 static HRESULT WINAPI JScript_Clone(IActiveScript *iface, IActiveScript **ppscript)
201 JScript *This = ACTSCRIPT_THIS(iface);
202 FIXME("(%p)->()\n", This);
206 #undef ACTSCRIPT_THIS
208 static const IActiveScriptVtbl JScriptVtbl = {
209 JScript_QueryInterface,
212 JScript_SetScriptSite,
213 JScript_GetScriptSite,
214 JScript_SetScriptState,
215 JScript_GetScriptState,
217 JScript_AddNamedItem,
219 JScript_GetScriptDispatch,
220 JScript_GetCurrentScriptThreadID,
221 JScript_GetScriptThreadID,
222 JScript_GetScriptThreadState,
223 JScript_InterruptScriptThread,
227 #define ASPARSE_THIS(iface) DEFINE_THIS(JScript, IActiveScriptParse, iface)
229 static HRESULT WINAPI JScriptParse_QueryInterface(IActiveScriptParse *iface, REFIID riid, void **ppv)
231 JScript *This = ASPARSE_THIS(iface);
232 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
235 static ULONG WINAPI JScriptParse_AddRef(IActiveScriptParse *iface)
237 JScript *This = ASPARSE_THIS(iface);
238 return IActiveScript_AddRef(ACTSCRIPT(This));
241 static ULONG WINAPI JScriptParse_Release(IActiveScriptParse *iface)
243 JScript *This = ASPARSE_THIS(iface);
244 return IActiveScript_Release(ACTSCRIPT(This));
247 static HRESULT WINAPI JScriptParse_InitNew(IActiveScriptParse *iface)
249 JScript *This = ASPARSE_THIS(iface);
250 FIXME("(%p)\n", This);
254 static HRESULT WINAPI JScriptParse_AddScriptlet(IActiveScriptParse *iface,
255 LPCOLESTR pstrDefaultName, LPCOLESTR pstrCode, LPCOLESTR pstrItemName,
256 LPCOLESTR pstrSubItemName, LPCOLESTR pstrEventName, LPCOLESTR pstrDelimiter,
257 DWORD dwSourceContextCookie, ULONG ulStartingLineNumber, DWORD dwFlags,
258 BSTR *pbstrName, EXCEPINFO *pexcepinfo)
260 JScript *This = ASPARSE_THIS(iface);
261 FIXME("(%p)->(%s %s %s %s %s %s %x %u %x %p %p)\n", This, debugstr_w(pstrDefaultName),
262 debugstr_w(pstrCode), debugstr_w(pstrItemName), debugstr_w(pstrSubItemName),
263 debugstr_w(pstrEventName), debugstr_w(pstrDelimiter), dwSourceContextCookie,
264 ulStartingLineNumber, dwFlags, pbstrName, pexcepinfo);
268 static HRESULT WINAPI JScriptParse_ParseScriptText(IActiveScriptParse *iface,
269 LPCOLESTR pstrCode, LPCOLESTR pstrItemName, IUnknown *punkContext,
270 LPCOLESTR pstrDelimiter, DWORD dwSourceContextCookie, ULONG ulStartingLine,
271 DWORD dwFlags, VARIANT *pvarResult, EXCEPINFO *pexcepinfo)
273 JScript *This = ASPARSE_THIS(iface);
274 FIXME("(%p)->(%s %s %p %s %x %u %x %p %p)\n", This, debugstr_w(pstrCode),
275 debugstr_w(pstrItemName), punkContext, debugstr_w(pstrDelimiter),
276 dwSourceContextCookie, ulStartingLine, dwFlags, pvarResult, pexcepinfo);
282 static const IActiveScriptParseVtbl JScriptParseVtbl = {
283 JScriptParse_QueryInterface,
285 JScriptParse_Release,
286 JScriptParse_InitNew,
287 JScriptParse_AddScriptlet,
288 JScriptParse_ParseScriptText
291 #define ASPARSEPROC_THIS(iface) DEFINE_THIS(JScript, IActiveScriptParse, iface)
293 static HRESULT WINAPI JScriptParseProcedure_QueryInterface(IActiveScriptParseProcedure2 *iface, REFIID riid, void **ppv)
295 JScript *This = ASPARSEPROC_THIS(iface);
296 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
299 static ULONG WINAPI JScriptParseProcedure_AddRef(IActiveScriptParseProcedure2 *iface)
301 JScript *This = ASPARSEPROC_THIS(iface);
302 return IActiveScript_AddRef(ACTSCRIPT(This));
305 static ULONG WINAPI JScriptParseProcedure_Release(IActiveScriptParseProcedure2 *iface)
307 JScript *This = ASPARSEPROC_THIS(iface);
308 return IActiveScript_Release(ACTSCRIPT(This));
311 static HRESULT WINAPI JScriptParseProcedure_ParseProcedureText(IActiveScriptParseProcedure2 *iface,
312 LPCOLESTR pstrCode, LPCOLESTR pstrFormalParams, LPCOLESTR pstrProcedureName,
313 LPCOLESTR pstrItemName, IUnknown *punkContext, LPCOLESTR pstrDelimiter,
314 DWORD dwSourceContextCookie, ULONG ulStartingLineNumber, DWORD dwFlags, IDispatch **ppdisp)
316 JScript *This = ASPARSEPROC_THIS(iface);
317 FIXME("(%p)->()\n", This);
321 #undef ASPARSEPROC_THIS
323 static const IActiveScriptParseProcedure2Vtbl JScriptParseProcedureVtbl = {
324 JScriptParseProcedure_QueryInterface,
325 JScriptParseProcedure_AddRef,
326 JScriptParseProcedure_Release,
327 JScriptParseProcedure_ParseProcedureText,
330 #define ACTSCPPROP_THIS(iface) DEFINE_THIS(JScript, IActiveScriptProperty, iface)
332 static HRESULT WINAPI JScriptProperty_QueryInterface(IActiveScriptProperty *iface, REFIID riid, void **ppv)
334 JScript *This = ACTSCPPROP_THIS(iface);
335 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
338 static ULONG WINAPI JScriptProperty_AddRef(IActiveScriptProperty *iface)
340 JScript *This = ACTSCPPROP_THIS(iface);
341 return IActiveScript_AddRef(ACTSCRIPT(This));
344 static ULONG WINAPI JScriptProperty_Release(IActiveScriptProperty *iface)
346 JScript *This = ACTSCPPROP_THIS(iface);
347 return IActiveScript_Release(ACTSCRIPT(This));
350 static HRESULT WINAPI JScriptProperty_GetProperty(IActiveScriptProperty *iface, DWORD dwProperty,
351 VARIANT *pvarIndex, VARIANT *pvarValue)
353 JScript *This = ACTSCPPROP_THIS(iface);
354 FIXME("(%p)->(%x %p %p)\n", This, dwProperty, pvarIndex, pvarValue);
358 static HRESULT WINAPI JScriptProperty_SetProperty(IActiveScriptProperty *iface, DWORD dwProperty,
359 VARIANT *pvarIndex, VARIANT *pvarValue)
361 JScript *This = ACTSCPPROP_THIS(iface);
362 FIXME("(%p)->(%x %p %p)\n", This, dwProperty, pvarIndex, pvarValue);
366 #undef ACTSCPPROP_THIS
368 static const IActiveScriptPropertyVtbl JScriptPropertyVtbl = {
369 JScriptProperty_QueryInterface,
370 JScriptProperty_AddRef,
371 JScriptProperty_Release,
372 JScriptProperty_GetProperty,
373 JScriptProperty_SetProperty
376 #define OBJSAFETY_THIS(iface) DEFINE_THIS(JScript, IObjectSafety, iface)
378 static HRESULT WINAPI JScriptSafety_QueryInterface(IObjectSafety *iface, REFIID riid, void **ppv)
380 JScript *This = OBJSAFETY_THIS(iface);
381 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
384 static ULONG WINAPI JScriptSafety_AddRef(IObjectSafety *iface)
386 JScript *This = OBJSAFETY_THIS(iface);
387 return IActiveScript_AddRef(ACTSCRIPT(This));
390 static ULONG WINAPI JScriptSafety_Release(IObjectSafety *iface)
392 JScript *This = OBJSAFETY_THIS(iface);
393 return IActiveScript_Release(ACTSCRIPT(This));
396 static HRESULT WINAPI JScriptSafety_GetInterfaceSafetyOptions(IObjectSafety *iface, REFIID riid,
397 DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions)
399 JScript *This = OBJSAFETY_THIS(iface);
400 FIXME("(%p)->(%s %p %p)\n", This, debugstr_guid(riid), pdwSupportedOptions, pdwEnabledOptions);
404 static HRESULT WINAPI JScriptSafety_SetInterfaceSafetyOptions(IObjectSafety *iface, REFIID riid,
405 DWORD dwOptionSetMask, DWORD dwEnabledOptions)
407 JScript *This = OBJSAFETY_THIS(iface);
408 FIXME("(%p)->(%s %x %x)\n", This, debugstr_guid(riid), dwOptionSetMask, dwEnabledOptions);
412 #undef OBJSAFETY_THIS
414 static const IObjectSafetyVtbl JScriptSafetyVtbl = {
415 JScriptSafety_QueryInterface,
416 JScriptSafety_AddRef,
417 JScriptSafety_Release,
418 JScriptSafety_GetInterfaceSafetyOptions,
419 JScriptSafety_SetInterfaceSafetyOptions
422 HRESULT WINAPI JScriptFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter,
423 REFIID riid, void **ppv)
428 TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppv);
430 ret = heap_alloc(sizeof(*ret));
432 ret->lpIActiveScriptVtbl = &JScriptVtbl;
433 ret->lpIActiveScriptParseVtbl = &JScriptParseVtbl;
434 ret->lpIActiveScriptParseProcedure2Vtbl = &JScriptParseProcedureVtbl;
435 ret->lpIActiveScriptPropertyVtbl = &JScriptPropertyVtbl;
436 ret->lpIObjectSafetyVtbl = &JScriptSafetyVtbl;
439 hres = IActiveScript_QueryInterface(ACTSCRIPT(ret), riid, ppv);
440 IActiveScript_Release(ACTSCRIPT(ret));