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
22 #include "wine/debug.h"
24 WINE_DEFAULT_DEBUG_CHANNEL(jscript);
27 const IActiveScriptVtbl *lpIActiveScriptVtbl;
28 const IActiveScriptParseVtbl *lpIActiveScriptParseVtbl;
29 const IActiveScriptPropertyVtbl *lpIActiveScriptPropertyVtbl;
34 #define ACTSCRIPT(x) ((IActiveScript*) &(x)->lpIActiveScriptVtbl)
35 #define ASPARSE(x) ((IActiveScriptParse*) &(x)->lpIActiveScriptParseVtbl)
36 #define ACTSCPPROP(x) ((IActiveScriptProperty*) &(x)->lpIActiveScriptPropertyVtbl)
38 #define ACTSCRIPT_THIS(iface) DEFINE_THIS(JScript, IActiveScript, iface)
40 static HRESULT WINAPI JScript_QueryInterface(IActiveScript *iface, REFIID riid, void **ppv)
42 JScript *This = ACTSCRIPT_THIS(iface);
46 if(IsEqualGUID(riid, &IID_IUnknown)) {
47 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
48 *ppv = ACTSCRIPT(This);
49 }else if(IsEqualGUID(riid, &IID_IActiveScript)) {
50 TRACE("(%p)->(IID_IActiveScript %p)\n", This, ppv);
51 *ppv = ACTSCRIPT(This);
52 }else if(IsEqualGUID(riid, &IID_IActiveScriptParse)) {
53 TRACE("(%p)->(IID_IActiveScriptParse %p)\n", This, ppv);
55 }else if(IsEqualGUID(riid, &IID_IActiveScriptProperty)) {
56 TRACE("(%p)->(IID_IActiveScriptProperty %p)\n", This, ppv);
57 *ppv = ACTSCPPROP(This);
61 IUnknown_AddRef((IUnknown*)*ppv);
65 FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
69 static ULONG WINAPI JScript_AddRef(IActiveScript *iface)
71 JScript *This = ACTSCRIPT_THIS(iface);
72 LONG ref = InterlockedIncrement(&This->ref);
74 TRACE("(%p) ref=%d\n", This, ref);
79 static ULONG WINAPI JScript_Release(IActiveScript *iface)
81 JScript *This = ACTSCRIPT_THIS(iface);
82 LONG ref = InterlockedDecrement(&This->ref);
84 TRACE("(%p) ref=%d\n", iface, ref);
92 static HRESULT WINAPI JScript_SetScriptSite(IActiveScript *iface,
93 IActiveScriptSite *pass)
95 JScript *This = ACTSCRIPT_THIS(iface);
96 FIXME("(%p)->(%p)\n", This, pass);
100 static HRESULT WINAPI JScript_GetScriptSite(IActiveScript *iface, REFIID riid,
103 JScript *This = ACTSCRIPT_THIS(iface);
104 FIXME("(%p)->()\n", This);
108 static HRESULT WINAPI JScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE ss)
110 JScript *This = ACTSCRIPT_THIS(iface);
111 FIXME("(%p)->(%d)\n", This, ss);
115 static HRESULT WINAPI JScript_GetScriptState(IActiveScript *iface, SCRIPTSTATE *pssState)
117 JScript *This = ACTSCRIPT_THIS(iface);
118 FIXME("(%p)->(%p)\n", This, pssState);
122 static HRESULT WINAPI JScript_Close(IActiveScript *iface)
124 JScript *This = ACTSCRIPT_THIS(iface);
125 FIXME("(%p)->()\n", This);
129 static HRESULT WINAPI JScript_AddNamedItem(IActiveScript *iface,
130 LPCOLESTR pstrName, DWORD dwFlags)
132 JScript *This = ACTSCRIPT_THIS(iface);
133 FIXME("(%p)->(%s %x)\n", This, debugstr_w(pstrName), dwFlags);
137 static HRESULT WINAPI JScript_AddTypeLib(IActiveScript *iface, REFGUID rguidTypeLib,
138 DWORD dwMajor, DWORD dwMinor, DWORD dwFlags)
140 JScript *This = ACTSCRIPT_THIS(iface);
141 FIXME("(%p)->()\n", This);
145 static HRESULT WINAPI JScript_GetScriptDispatch(IActiveScript *iface, LPCOLESTR pstrItemName,
148 JScript *This = ACTSCRIPT_THIS(iface);
149 FIXME("(%p)->()\n", This);
153 static HRESULT WINAPI JScript_GetCurrentScriptThreadID(IActiveScript *iface,
154 SCRIPTTHREADID *pstridThread)
156 JScript *This = ACTSCRIPT_THIS(iface);
157 FIXME("(%p)->()\n", This);
161 static HRESULT WINAPI JScript_GetScriptThreadID(IActiveScript *iface,
162 DWORD dwWin32ThreadId, SCRIPTTHREADID *pstidThread)
164 JScript *This = ACTSCRIPT_THIS(iface);
165 FIXME("(%p)->()\n", This);
169 static HRESULT WINAPI JScript_GetScriptThreadState(IActiveScript *iface,
170 SCRIPTTHREADID stidThread, SCRIPTTHREADSTATE *pstsState)
172 JScript *This = ACTSCRIPT_THIS(iface);
173 FIXME("(%p)->()\n", This);
177 static HRESULT WINAPI JScript_InterruptScriptThread(IActiveScript *iface,
178 SCRIPTTHREADID stidThread, const EXCEPINFO *pexcepinfo, DWORD dwFlags)
180 JScript *This = ACTSCRIPT_THIS(iface);
181 FIXME("(%p)->()\n", This);
185 static HRESULT WINAPI JScript_Clone(IActiveScript *iface, IActiveScript **ppscript)
187 JScript *This = ACTSCRIPT_THIS(iface);
188 FIXME("(%p)->()\n", This);
192 #undef ACTSCRIPT_THIS
194 static const IActiveScriptVtbl JScriptVtbl = {
195 JScript_QueryInterface,
198 JScript_SetScriptSite,
199 JScript_GetScriptSite,
200 JScript_SetScriptState,
201 JScript_GetScriptState,
203 JScript_AddNamedItem,
205 JScript_GetScriptDispatch,
206 JScript_GetCurrentScriptThreadID,
207 JScript_GetScriptThreadID,
208 JScript_GetScriptThreadState,
209 JScript_InterruptScriptThread,
213 #define ASPARSE_THIS(iface) DEFINE_THIS(JScript, IActiveScriptParse, iface)
215 static HRESULT WINAPI JScriptParse_QueryInterface(IActiveScriptParse *iface, REFIID riid, void **ppv)
217 JScript *This = ASPARSE_THIS(iface);
218 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
221 static ULONG WINAPI JScriptParse_AddRef(IActiveScriptParse *iface)
223 JScript *This = ASPARSE_THIS(iface);
224 return IActiveScript_AddRef(ACTSCRIPT(This));
227 static ULONG WINAPI JScriptParse_Release(IActiveScriptParse *iface)
229 JScript *This = ASPARSE_THIS(iface);
230 return IActiveScript_Release(ACTSCRIPT(This));
233 static HRESULT WINAPI JScriptParse_InitNew(IActiveScriptParse *iface)
235 JScript *This = ASPARSE_THIS(iface);
236 FIXME("(%p)\n", This);
240 static HRESULT WINAPI JScriptParse_AddScriptlet(IActiveScriptParse *iface,
241 LPCOLESTR pstrDefaultName, LPCOLESTR pstrCode, LPCOLESTR pstrItemName,
242 LPCOLESTR pstrSubItemName, LPCOLESTR pstrEventName, LPCOLESTR pstrDelimiter,
243 DWORD dwSourceContextCookie, ULONG ulStartingLineNumber, DWORD dwFlags,
244 BSTR *pbstrName, EXCEPINFO *pexcepinfo)
246 JScript *This = ASPARSE_THIS(iface);
247 FIXME("(%p)->(%s %s %s %s %s %s %x %u %x %p %p)\n", This, debugstr_w(pstrDefaultName),
248 debugstr_w(pstrCode), debugstr_w(pstrItemName), debugstr_w(pstrSubItemName),
249 debugstr_w(pstrEventName), debugstr_w(pstrDelimiter), dwSourceContextCookie,
250 ulStartingLineNumber, dwFlags, pbstrName, pexcepinfo);
254 static HRESULT WINAPI JScriptParse_ParseScriptText(IActiveScriptParse *iface,
255 LPCOLESTR pstrCode, LPCOLESTR pstrItemName, IUnknown *punkContext,
256 LPCOLESTR pstrDelimiter, DWORD dwSourceContextCookie, ULONG ulStartingLine,
257 DWORD dwFlags, VARIANT *pvarResult, EXCEPINFO *pexcepinfo)
259 JScript *This = ASPARSE_THIS(iface);
260 FIXME("(%p)->(%s %s %p %s %x %u %x %p %p)\n", This, debugstr_w(pstrCode),
261 debugstr_w(pstrItemName), punkContext, debugstr_w(pstrDelimiter),
262 dwSourceContextCookie, ulStartingLine, dwFlags, pvarResult, pexcepinfo);
268 static const IActiveScriptParseVtbl JScriptParseVtbl = {
269 JScriptParse_QueryInterface,
271 JScriptParse_Release,
272 JScriptParse_InitNew,
273 JScriptParse_AddScriptlet,
274 JScriptParse_ParseScriptText
277 #define ACTSCPPROP_THIS(iface) DEFINE_THIS(JScript, IActiveScriptProperty, iface)
279 static HRESULT WINAPI JScriptProperty_QueryInterface(IActiveScriptProperty *iface, REFIID riid, void **ppv)
281 JScript *This = ACTSCPPROP_THIS(iface);
282 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
285 static ULONG WINAPI JScriptProperty_AddRef(IActiveScriptProperty *iface)
287 JScript *This = ACTSCPPROP_THIS(iface);
288 return IActiveScript_AddRef(ACTSCRIPT(This));
291 static ULONG WINAPI JScriptProperty_Release(IActiveScriptProperty *iface)
293 JScript *This = ACTSCPPROP_THIS(iface);
294 return IActiveScript_Release(ACTSCRIPT(This));
297 static HRESULT WINAPI JScriptProperty_GetProperty(IActiveScriptProperty *iface, DWORD dwProperty,
298 VARIANT *pvarIndex, VARIANT *pvarValue)
300 JScript *This = ACTSCPPROP_THIS(iface);
301 FIXME("(%p)->(%x %p %p)\n", This, dwProperty, pvarIndex, pvarValue);
305 static HRESULT WINAPI JScriptProperty_SetProperty(IActiveScriptProperty *iface, DWORD dwProperty,
306 VARIANT *pvarIndex, VARIANT *pvarValue)
308 JScript *This = ACTSCPPROP_THIS(iface);
309 FIXME("(%p)->(%x %p %p)\n", This, dwProperty, pvarIndex, pvarValue);
313 #undef ACTSCPPROP_THIS
315 static const IActiveScriptPropertyVtbl JScriptPropertyVtbl = {
316 JScriptProperty_QueryInterface,
317 JScriptProperty_AddRef,
318 JScriptProperty_Release,
319 JScriptProperty_GetProperty,
320 JScriptProperty_SetProperty
323 HRESULT WINAPI JScriptFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter,
324 REFIID riid, void **ppv)
329 TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppv);
331 ret = heap_alloc(sizeof(*ret));
333 ret->lpIActiveScriptVtbl = &JScriptVtbl;
334 ret->lpIActiveScriptParseVtbl = &JScriptParseVtbl;
335 ret->lpIActiveScriptPropertyVtbl = &JScriptPropertyVtbl;
338 hres = IActiveScript_QueryInterface(ACTSCRIPT(ret), riid, ppv);
339 IActiveScript_Release(ACTSCRIPT(ret));