2 * Copyright 2011 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
31 #include "wine/debug.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(vbscript
);
37 #define CTXARG_T DWORDLONG
38 #define IActiveScriptParseVtbl IActiveScriptParse64Vtbl
42 #define CTXARG_T DWORD
43 #define IActiveScriptParseVtbl IActiveScriptParse32Vtbl
47 static inline VBScript
*impl_from_IActiveScript(IActiveScript
*iface
)
49 return CONTAINING_RECORD(iface
, VBScript
, IActiveScript_iface
);
52 static HRESULT WINAPI
VBScript_QueryInterface(IActiveScript
*iface
, REFIID riid
, void **ppv
)
54 VBScript
*This
= impl_from_IActiveScript(iface
);
56 if(IsEqualGUID(riid
, &IID_IUnknown
)) {
57 TRACE("(%p)->(IID_IUnknown %p)\n", This
, ppv
);
58 *ppv
= &This
->IActiveScript_iface
;
59 }else if(IsEqualGUID(riid
, &IID_IActiveScript
)) {
60 TRACE("(%p)->(IID_IActiveScript %p)\n", This
, ppv
);
61 *ppv
= &This
->IActiveScript_iface
;
62 }else if(IsEqualGUID(riid
, &IID_IActiveScriptParse
)) {
63 TRACE("(%p)->(IID_IActiveScriptParse %p)\n", This
, ppv
);
64 *ppv
= &This
->IActiveScriptParse_iface
;
66 FIXME("(%p)->(%s %p)\n", This
, debugstr_guid(riid
), ppv
);
71 IUnknown_AddRef((IUnknown
*)*ppv
);
75 static ULONG WINAPI
VBScript_AddRef(IActiveScript
*iface
)
77 VBScript
*This
= impl_from_IActiveScript(iface
);
78 LONG ref
= InterlockedIncrement(&This
->ref
);
80 TRACE("(%p) ref=%d\n", This
, ref
);
85 static ULONG WINAPI
VBScript_Release(IActiveScript
*iface
)
87 VBScript
*This
= impl_from_IActiveScript(iface
);
88 LONG ref
= InterlockedDecrement(&This
->ref
);
90 TRACE("(%p) ref=%d\n", iface
, ref
);
98 static HRESULT WINAPI
VBScript_SetScriptSite(IActiveScript
*iface
, IActiveScriptSite
*pass
)
100 VBScript
*This
= impl_from_IActiveScript(iface
);
101 FIXME("(%p)->(%p)\n", This
, pass
);
105 static HRESULT WINAPI
VBScript_GetScriptSite(IActiveScript
*iface
, REFIID riid
,
108 VBScript
*This
= impl_from_IActiveScript(iface
);
109 FIXME("(%p)->()\n", This
);
113 static HRESULT WINAPI
VBScript_SetScriptState(IActiveScript
*iface
, SCRIPTSTATE ss
)
115 VBScript
*This
= impl_from_IActiveScript(iface
);
116 FIXME("(%p)->(%d)\n", This
, ss
);
120 static HRESULT WINAPI
VBScript_GetScriptState(IActiveScript
*iface
, SCRIPTSTATE
*pssState
)
122 VBScript
*This
= impl_from_IActiveScript(iface
);
123 FIXME("(%p)->(%p)\n", This
, pssState
);
127 static HRESULT WINAPI
VBScript_Close(IActiveScript
*iface
)
129 VBScript
*This
= impl_from_IActiveScript(iface
);
130 FIXME("(%p)->()\n", This
);
134 static HRESULT WINAPI
VBScript_AddNamedItem(IActiveScript
*iface
, LPCOLESTR pstrName
, DWORD dwFlags
)
136 VBScript
*This
= impl_from_IActiveScript(iface
);
137 FIXME("(%p)->(%s %x)\n", This
, debugstr_w(pstrName
), dwFlags
);
141 static HRESULT WINAPI
VBScript_AddTypeLib(IActiveScript
*iface
, REFGUID rguidTypeLib
,
142 DWORD dwMajor
, DWORD dwMinor
, DWORD dwFlags
)
144 VBScript
*This
= impl_from_IActiveScript(iface
);
145 FIXME("(%p)->()\n", This
);
149 static HRESULT WINAPI
VBScript_GetScriptDispatch(IActiveScript
*iface
, LPCOLESTR pstrItemName
, IDispatch
**ppdisp
)
151 VBScript
*This
= impl_from_IActiveScript(iface
);
152 FIXME("(%p)->(%p)\n", This
, ppdisp
);
156 static HRESULT WINAPI
VBScript_GetCurrentScriptThreadID(IActiveScript
*iface
,
157 SCRIPTTHREADID
*pstridThread
)
159 VBScript
*This
= impl_from_IActiveScript(iface
);
160 FIXME("(%p)->()\n", This
);
164 static HRESULT WINAPI
VBScript_GetScriptThreadID(IActiveScript
*iface
,
165 DWORD dwWin32ThreadId
, SCRIPTTHREADID
*pstidThread
)
167 VBScript
*This
= impl_from_IActiveScript(iface
);
168 FIXME("(%p)->()\n", This
);
172 static HRESULT WINAPI
VBScript_GetScriptThreadState(IActiveScript
*iface
,
173 SCRIPTTHREADID stidThread
, SCRIPTTHREADSTATE
*pstsState
)
175 VBScript
*This
= impl_from_IActiveScript(iface
);
176 FIXME("(%p)->()\n", This
);
180 static HRESULT WINAPI
VBScript_InterruptScriptThread(IActiveScript
*iface
,
181 SCRIPTTHREADID stidThread
, const EXCEPINFO
*pexcepinfo
, DWORD dwFlags
)
183 VBScript
*This
= impl_from_IActiveScript(iface
);
184 FIXME("(%p)->()\n", This
);
188 static HRESULT WINAPI
VBScript_Clone(IActiveScript
*iface
, IActiveScript
**ppscript
)
190 VBScript
*This
= impl_from_IActiveScript(iface
);
191 FIXME("(%p)->()\n", This
);
195 static const IActiveScriptVtbl VBScriptVtbl
= {
196 VBScript_QueryInterface
,
199 VBScript_SetScriptSite
,
200 VBScript_GetScriptSite
,
201 VBScript_SetScriptState
,
202 VBScript_GetScriptState
,
204 VBScript_AddNamedItem
,
206 VBScript_GetScriptDispatch
,
207 VBScript_GetCurrentScriptThreadID
,
208 VBScript_GetScriptThreadID
,
209 VBScript_GetScriptThreadState
,
210 VBScript_InterruptScriptThread
,
214 static inline VBScript
*impl_from_IActiveScriptParse(IActiveScriptParse
*iface
)
216 return CONTAINING_RECORD(iface
, VBScript
, IActiveScriptParse_iface
);
219 static HRESULT WINAPI
VBScriptParse_QueryInterface(IActiveScriptParse
*iface
, REFIID riid
, void **ppv
)
221 VBScript
*This
= impl_from_IActiveScriptParse(iface
);
222 return IActiveScript_QueryInterface(&This
->IActiveScript_iface
, riid
, ppv
);
225 static ULONG WINAPI
VBScriptParse_AddRef(IActiveScriptParse
*iface
)
227 VBScript
*This
= impl_from_IActiveScriptParse(iface
);
228 return IActiveScript_AddRef(&This
->IActiveScript_iface
);
231 static ULONG WINAPI
VBScriptParse_Release(IActiveScriptParse
*iface
)
233 VBScript
*This
= impl_from_IActiveScriptParse(iface
);
234 return IActiveScript_Release(&This
->IActiveScript_iface
);
237 static HRESULT WINAPI
VBScriptParse_InitNew(IActiveScriptParse
*iface
)
239 VBScript
*This
= impl_from_IActiveScriptParse(iface
);
240 FIXME("(%p)\n", This
);
244 static HRESULT WINAPI
VBScriptParse_AddScriptlet(IActiveScriptParse
*iface
,
245 LPCOLESTR pstrDefaultName
, LPCOLESTR pstrCode
, LPCOLESTR pstrItemName
,
246 LPCOLESTR pstrSubItemName
, LPCOLESTR pstrEventName
, LPCOLESTR pstrDelimiter
,
247 CTXARG_T dwSourceContextCookie
, ULONG ulStartingLineNumber
, DWORD dwFlags
,
248 BSTR
*pbstrName
, EXCEPINFO
*pexcepinfo
)
250 VBScript
*This
= impl_from_IActiveScriptParse(iface
);
251 FIXME("(%p)->(%s %s %s %s %s %s %s %u %x %p %p)\n", This
, debugstr_w(pstrDefaultName
),
252 debugstr_w(pstrCode
), debugstr_w(pstrItemName
), debugstr_w(pstrSubItemName
),
253 debugstr_w(pstrEventName
), debugstr_w(pstrDelimiter
), wine_dbgstr_longlong(dwSourceContextCookie
),
254 ulStartingLineNumber
, dwFlags
, pbstrName
, pexcepinfo
);
258 static HRESULT WINAPI
VBScriptParse_ParseScriptText(IActiveScriptParse
*iface
,
259 LPCOLESTR pstrCode
, LPCOLESTR pstrItemName
, IUnknown
*punkContext
,
260 LPCOLESTR pstrDelimiter
, CTXARG_T dwSourceContextCookie
, ULONG ulStartingLine
,
261 DWORD dwFlags
, VARIANT
*pvarResult
, EXCEPINFO
*pexcepinfo
)
263 VBScript
*This
= impl_from_IActiveScriptParse(iface
);
264 FIXME("(%p)->(%s %s %p %s %s %u %x %p %p)\n", This
, debugstr_w(pstrCode
),
265 debugstr_w(pstrItemName
), punkContext
, debugstr_w(pstrDelimiter
),
266 wine_dbgstr_longlong(dwSourceContextCookie
), ulStartingLine
, dwFlags
, pvarResult
, pexcepinfo
);
270 static const IActiveScriptParseVtbl VBScriptParseVtbl
= {
271 VBScriptParse_QueryInterface
,
272 VBScriptParse_AddRef
,
273 VBScriptParse_Release
,
274 VBScriptParse_InitNew
,
275 VBScriptParse_AddScriptlet
,
276 VBScriptParse_ParseScriptText
279 HRESULT WINAPI
VBScriptFactory_CreateInstance(IClassFactory
*iface
, IUnknown
*pUnkOuter
, REFIID riid
, void **ppv
)
284 TRACE("(%p %s %p)\n", pUnkOuter
, debugstr_guid(riid
), ppv
);
286 ret
= heap_alloc_zero(sizeof(*ret
));
288 return E_OUTOFMEMORY
;
290 ret
->IActiveScript_iface
.lpVtbl
= &VBScriptVtbl
;
291 ret
->IActiveScriptParse_iface
.lpVtbl
= &VBScriptParseVtbl
;
295 hres
= IActiveScript_QueryInterface(&ret
->IActiveScript_iface
, riid
, ppv
);
296 IActiveScript_Release(&ret
->IActiveScript_iface
);