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;
33 #define ACTSCRIPT(x) ((IActiveScript*) &(x)->lpIActiveScriptVtbl)
34 #define ASPARSE(x) ((IActiveScriptParse*) &(x)->lpIActiveScriptParseVtbl)
36 #define ACTSCRIPT_THIS(iface) DEFINE_THIS(JScript, IActiveScript, iface)
38 static HRESULT WINAPI JScript_QueryInterface(IActiveScript *iface, REFIID riid, void **ppv)
40 JScript *This = ACTSCRIPT_THIS(iface);
44 if(IsEqualGUID(riid, &IID_IUnknown)) {
45 TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
46 *ppv = ACTSCRIPT(This);
47 }else if(IsEqualGUID(riid, &IID_IActiveScript)) {
48 TRACE("(%p)->(IID_IActiveScript %p)\n", This, ppv);
49 *ppv = ACTSCRIPT(This);
50 }else if(IsEqualGUID(riid, &IID_IActiveScriptParse)) {
51 TRACE("(%p)->(IID_IActiveScriptParse %p)\n", This, ppv);
56 IUnknown_AddRef((IUnknown*)*ppv);
60 FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
64 static ULONG WINAPI JScript_AddRef(IActiveScript *iface)
66 JScript *This = ACTSCRIPT_THIS(iface);
67 LONG ref = InterlockedIncrement(&This->ref);
69 TRACE("(%p) ref=%d\n", This, ref);
74 static ULONG WINAPI JScript_Release(IActiveScript *iface)
76 JScript *This = ACTSCRIPT_THIS(iface);
77 LONG ref = InterlockedDecrement(&This->ref);
79 TRACE("(%p) ref=%d\n", iface, ref);
87 static HRESULT WINAPI JScript_SetScriptSite(IActiveScript *iface,
88 IActiveScriptSite *pass)
90 JScript *This = ACTSCRIPT_THIS(iface);
91 FIXME("(%p)->(%p)\n", This, pass);
95 static HRESULT WINAPI JScript_GetScriptSite(IActiveScript *iface, REFIID riid,
98 JScript *This = ACTSCRIPT_THIS(iface);
99 FIXME("(%p)->()\n", This);
103 static HRESULT WINAPI JScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE ss)
105 JScript *This = ACTSCRIPT_THIS(iface);
106 FIXME("(%p)->(%d)\n", This, ss);
110 static HRESULT WINAPI JScript_GetScriptState(IActiveScript *iface, SCRIPTSTATE *pssState)
112 JScript *This = ACTSCRIPT_THIS(iface);
113 FIXME("(%p)->(%p)\n", This, pssState);
117 static HRESULT WINAPI JScript_Close(IActiveScript *iface)
119 JScript *This = ACTSCRIPT_THIS(iface);
120 FIXME("(%p)->()\n", This);
124 static HRESULT WINAPI JScript_AddNamedItem(IActiveScript *iface,
125 LPCOLESTR pstrName, DWORD dwFlags)
127 JScript *This = ACTSCRIPT_THIS(iface);
128 FIXME("(%p)->(%s %x)\n", This, debugstr_w(pstrName), dwFlags);
132 static HRESULT WINAPI JScript_AddTypeLib(IActiveScript *iface, REFGUID rguidTypeLib,
133 DWORD dwMajor, DWORD dwMinor, DWORD dwFlags)
135 JScript *This = ACTSCRIPT_THIS(iface);
136 FIXME("(%p)->()\n", This);
140 static HRESULT WINAPI JScript_GetScriptDispatch(IActiveScript *iface, LPCOLESTR pstrItemName,
143 JScript *This = ACTSCRIPT_THIS(iface);
144 FIXME("(%p)->()\n", This);
148 static HRESULT WINAPI JScript_GetCurrentScriptThreadID(IActiveScript *iface,
149 SCRIPTTHREADID *pstridThread)
151 JScript *This = ACTSCRIPT_THIS(iface);
152 FIXME("(%p)->()\n", This);
156 static HRESULT WINAPI JScript_GetScriptThreadID(IActiveScript *iface,
157 DWORD dwWin32ThreadId, SCRIPTTHREADID *pstidThread)
159 JScript *This = ACTSCRIPT_THIS(iface);
160 FIXME("(%p)->()\n", This);
164 static HRESULT WINAPI JScript_GetScriptThreadState(IActiveScript *iface,
165 SCRIPTTHREADID stidThread, SCRIPTTHREADSTATE *pstsState)
167 JScript *This = ACTSCRIPT_THIS(iface);
168 FIXME("(%p)->()\n", This);
172 static HRESULT WINAPI JScript_InterruptScriptThread(IActiveScript *iface,
173 SCRIPTTHREADID stidThread, const EXCEPINFO *pexcepinfo, DWORD dwFlags)
175 JScript *This = ACTSCRIPT_THIS(iface);
176 FIXME("(%p)->()\n", This);
180 static HRESULT WINAPI JScript_Clone(IActiveScript *iface, IActiveScript **ppscript)
182 JScript *This = ACTSCRIPT_THIS(iface);
183 FIXME("(%p)->()\n", This);
187 #undef ACTSCRIPT_THIS
189 static const IActiveScriptVtbl JScriptVtbl = {
190 JScript_QueryInterface,
193 JScript_SetScriptSite,
194 JScript_GetScriptSite,
195 JScript_SetScriptState,
196 JScript_GetScriptState,
198 JScript_AddNamedItem,
200 JScript_GetScriptDispatch,
201 JScript_GetCurrentScriptThreadID,
202 JScript_GetScriptThreadID,
203 JScript_GetScriptThreadState,
204 JScript_InterruptScriptThread,
208 #define ASPARSE_THIS(iface) DEFINE_THIS(JScript, IActiveScriptParse, iface)
210 static HRESULT WINAPI JScriptParse_QueryInterface(IActiveScriptParse *iface, REFIID riid, void **ppv)
212 JScript *This = ASPARSE_THIS(iface);
213 return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
216 static ULONG WINAPI JScriptParse_AddRef(IActiveScriptParse *iface)
218 JScript *This = ASPARSE_THIS(iface);
219 return IActiveScript_AddRef(ACTSCRIPT(This));
222 static ULONG WINAPI JScriptParse_Release(IActiveScriptParse *iface)
224 JScript *This = ASPARSE_THIS(iface);
225 return IActiveScript_Release(ACTSCRIPT(This));
228 static HRESULT WINAPI JScriptParse_InitNew(IActiveScriptParse *iface)
230 JScript *This = ASPARSE_THIS(iface);
231 FIXME("(%p)\n", This);
235 static HRESULT WINAPI JScriptParse_AddScriptlet(IActiveScriptParse *iface,
236 LPCOLESTR pstrDefaultName, LPCOLESTR pstrCode, LPCOLESTR pstrItemName,
237 LPCOLESTR pstrSubItemName, LPCOLESTR pstrEventName, LPCOLESTR pstrDelimiter,
238 DWORD dwSourceContextCookie, ULONG ulStartingLineNumber, DWORD dwFlags,
239 BSTR *pbstrName, EXCEPINFO *pexcepinfo)
241 JScript *This = ASPARSE_THIS(iface);
242 FIXME("(%p)->(%s %s %s %s %s %s %x %u %x %p %p)\n", This, debugstr_w(pstrDefaultName),
243 debugstr_w(pstrCode), debugstr_w(pstrItemName), debugstr_w(pstrSubItemName),
244 debugstr_w(pstrEventName), debugstr_w(pstrDelimiter), dwSourceContextCookie,
245 ulStartingLineNumber, dwFlags, pbstrName, pexcepinfo);
249 static HRESULT WINAPI JScriptParse_ParseScriptText(IActiveScriptParse *iface,
250 LPCOLESTR pstrCode, LPCOLESTR pstrItemName, IUnknown *punkContext,
251 LPCOLESTR pstrDelimiter, DWORD dwSourceContextCookie, ULONG ulStartingLine,
252 DWORD dwFlags, VARIANT *pvarResult, EXCEPINFO *pexcepinfo)
254 JScript *This = ASPARSE_THIS(iface);
255 FIXME("(%p)->(%s %s %p %s %x %u %x %p %p)\n", This, debugstr_w(pstrCode),
256 debugstr_w(pstrItemName), punkContext, debugstr_w(pstrDelimiter),
257 dwSourceContextCookie, ulStartingLine, dwFlags, pvarResult, pexcepinfo);
263 static const IActiveScriptParseVtbl JScriptParseVtbl = {
264 JScriptParse_QueryInterface,
266 JScriptParse_Release,
267 JScriptParse_InitNew,
268 JScriptParse_AddScriptlet,
269 JScriptParse_ParseScriptText
272 HRESULT WINAPI JScriptFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter,
273 REFIID riid, void **ppv)
278 TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppv);
280 ret = heap_alloc(sizeof(*ret));
282 ret->lpIActiveScriptVtbl = &JScriptVtbl;
283 ret->lpIActiveScriptParseVtbl = &JScriptParseVtbl;
286 hres = IActiveScript_QueryInterface(ACTSCRIPT(ret), riid, ppv);
287 IActiveScript_Release(ACTSCRIPT(ret));