~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/dlls/jscript/jscript.c

Version: ~ [ wine-0.9.61 ] ~ [ wine-0.9.60 ] ~ [ wine-0.9.59 ] ~ [ wine-0.9.58 ] ~ [ wine-0.9.57 ] ~ [ wine-0.9.56 ] ~ [ wine-0.9.55 ] ~ [ wine-0.9.54 ] ~ [ wine-0.9.53 ] ~ [ wine-0.9.52 ] ~ [ wine-0.9.51 ] ~ [ wine-0.9.50 ] ~ [ wine-0.9.49 ] ~ [ wine-0.9.48 ] ~ [ wine-0.9.47 ] ~ [ wine-0.9.46 ] ~ [ wine-0.9.45 ] ~ [ wine-0.9.44 ] ~ [ wine-0.9.43 ] ~ [ wine-0.9.42 ] ~ [ wine-0.9.41 ] ~ [ wine-0.9.40 ] ~ [ wine-0.9.39 ] ~ [ wine-0.9.38 ] ~ [ wine-0.9.37 ] ~ [ wine-0.9.36 ] ~ [ wine-0.9.35 ] ~ [ wine-0.9.34 ] ~ [ wine-0.9.33 ] ~ [ wine-0.9.32 ] ~ [ wine-0.9.31 ] ~ [ wine-0.9.30 ] ~ [ wine-0.9.29 ] ~ [ wine-0.9.28 ] ~ [ wine-0.9.27 ] ~ [ wine-0.9.26 ] ~ [ wine-0.9.25 ] ~ [ wine-0.9.24 ] ~ [ wine-0.9.23 ] ~ [ wine-0.9.22 ] ~ [ wine-0.9.21 ] ~ [ wine-0.9.20 ] ~ [ wine-0.9.19 ] ~ [ wine-0.9.18 ] ~ [ wine-0.9.17 ] ~ [ wine-0.9.16 ] ~ [ wine-0.9.15 ] ~ [ wine-0.9.14 ] ~ [ wine-0.9.13 ] ~ [ wine-0.9.12 ] ~ [ wine-0.9.11 ] ~ [ wine-0.9.10 ] ~ [ wine-0.9.9 ] ~ [ wine-0.9.8 ] ~ [ wine-0.9.7 ] ~ [ wine-0.9.6 ] ~ [ wine-0.9.5 ] ~ [ wine-0.9.4 ] ~ [ wine-0.9.3 ] ~ [ wine-0.9.2 ] ~ [ wine-0.9.1 ] ~ [ wine-0.9 ] ~ [ wine20050930 ] ~ [ wine20050830 ] ~ [ wine20050725 ] ~ [ wine20050628 ] ~ [ wine20050524 ] ~ [ wine20050419 ] ~ [ wine20050310 ] ~ [ wine20050211 ] ~ [ wine20050111 ] ~ [ wine20041201 ] ~ [ wine20041019 ] ~ [ wine20040914 ] ~ [ wine20040813 ] ~ [ wine20040716 ] ~ [ wine20040615 ] ~ [ wine20040505 ] ~ [ wine20040408 ] ~ [ wine20040309 ] ~ [ wine20040213 ] ~ [ wine20040121 ] ~ [ wine20031212 ] ~ [ wine20031118 ] ~ [ wine20031016 ] ~ [ wine20030911 ] ~ [ wine20030813 ] ~ [ wine20030709 ] ~ [ wine20030618 ] ~ [ wine20030508 ] ~ [ wine20030408 ] ~ [ wine20030318 ] ~ [ wine20030219 ] ~ [ wine20030115 ] ~ [ wine20021219 ] ~ [ wine20021125 ] ~ [ wine20021031 ] ~ [ wine20021007 ] ~ [ wine20020904 ] ~ [ wine20020804 ] ~ [ wine20020710 ] ~ [ wine20020605 ] ~ [ wine20020509 ] ~ [ wine20020411 ] ~ [ wine20020310 ] ~ [ wine20020228 ] ~ [ wine20011226 ] ~ [ wine20011108 ] ~ [ wine20011004 ] ~ [ wine20010824 ] ~ [ wine20010731 ] ~ [ wine20010629 ] ~ [ wine20010510 ] ~ [ wine20010418 ] ~ [ wine20010326 ] ~ [ wine20010305 ] ~ [ wine20010216 ] ~ [ wine20010112 ] ~ [ wine20001222 ] ~ [ wine20001202 ] ~ [ wine20001026 ] ~ [ wine20001002 ] ~ [ wine20000909 ] ~ [ wine20000821 ] ~ [ wine20000801 ] ~ [ wine20000716 ] ~ [ wine20000326 ] ~ [ wine20000227 ] ~ [ wine20000130 ] ~ [ wine20000109 ] ~

  1 /*
  2  * Copyright 2008 Jacek Caban for CodeWeavers
  3  *
  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.
  8  *
  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.
 13  *
 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
 17  */
 18 
 19 #include "jscript.h"
 20 #include "activscp.h"
 21 #include "objsafe.h"
 22 
 23 #include "wine/debug.h"
 24 
 25 WINE_DEFAULT_DEBUG_CHANNEL(jscript);
 26 
 27 typedef struct {
 28     const IActiveScriptVtbl                 *lpIActiveScriptVtbl;
 29     const IActiveScriptParseVtbl            *lpIActiveScriptParseVtbl;
 30     const IActiveScriptParseProcedure2Vtbl  *lpIActiveScriptParseProcedure2Vtbl;
 31     const IActiveScriptPropertyVtbl         *lpIActiveScriptPropertyVtbl;
 32     const IObjectSafetyVtbl                 *lpIObjectSafetyVtbl;
 33 
 34     LONG ref;
 35 
 36     DWORD safeopt;
 37 } JScript;
 38 
 39 #define ACTSCRIPT(x)    ((IActiveScript*)                 &(x)->lpIActiveScriptVtbl)
 40 #define ASPARSE(x)      ((IActiveScriptParse*)            &(x)->lpIActiveScriptParseVtbl)
 41 #define ASPARSEPROC(x)  ((IActiveScriptParseProcedure2*)  &(x)->lpIActiveScriptParseProcedure2Vtbl)
 42 #define ACTSCPPROP(x)   ((IActiveScriptProperty*)         &(x)->lpIActiveScriptPropertyVtbl)
 43 #define OBJSAFETY(x)    ((IObjectSafety*)                 &(x)->lpIObjectSafetyVtbl)
 44 
 45 #define ACTSCRIPT_THIS(iface) DEFINE_THIS(JScript, IActiveScript, iface)
 46 
 47 static HRESULT WINAPI JScript_QueryInterface(IActiveScript *iface, REFIID riid, void **ppv)
 48 {
 49     JScript *This = ACTSCRIPT_THIS(iface);
 50 
 51     *ppv = NULL;
 52 
 53     if(IsEqualGUID(riid, &IID_IUnknown)) {
 54         TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
 55         *ppv = ACTSCRIPT(This);
 56     }else if(IsEqualGUID(riid, &IID_IActiveScript)) {
 57         TRACE("(%p)->(IID_IActiveScript %p)\n", This, ppv);
 58         *ppv = ACTSCRIPT(This);
 59     }else if(IsEqualGUID(riid, &IID_IActiveScriptParse)) {
 60         TRACE("(%p)->(IID_IActiveScriptParse %p)\n", This, ppv);
 61         *ppv = ASPARSE(This);
 62     }else if(IsEqualGUID(riid, &IID_IActiveScriptParseProcedure)) {
 63         TRACE("(%p)->(IID_IActiveScriptParseProcedure %p)\n", This, ppv);
 64         *ppv = ASPARSEPROC(This);
 65     }else if(IsEqualGUID(riid, &IID_IActiveScriptParseProcedure2)) {
 66         TRACE("(%p)->(IID_IActiveScriptParseProcedure2 %p)\n", This, ppv);
 67         *ppv = ASPARSEPROC(This);
 68     }else if(IsEqualGUID(riid, &IID_IActiveScriptProperty)) {
 69         TRACE("(%p)->(IID_IActiveScriptProperty %p)\n", This, ppv);
 70         *ppv = ACTSCPPROP(This);
 71     }else if(IsEqualGUID(riid, &IID_IObjectSafety)) {
 72         TRACE("(%p)->(IID_IObjectSafety %p)\n", This, ppv);
 73         *ppv = OBJSAFETY(This);
 74     }
 75 
 76     if(*ppv) {
 77         IUnknown_AddRef((IUnknown*)*ppv);
 78         return S_OK;
 79     }
 80 
 81     FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
 82     return E_NOINTERFACE;
 83 }
 84 
 85 static ULONG WINAPI JScript_AddRef(IActiveScript *iface)
 86 {
 87     JScript *This = ACTSCRIPT_THIS(iface);
 88     LONG ref = InterlockedIncrement(&This->ref);
 89 
 90     TRACE("(%p) ref=%d\n", This, ref);
 91 
 92     return ref;
 93 }
 94 
 95 static ULONG WINAPI JScript_Release(IActiveScript *iface)
 96 {
 97     JScript *This = ACTSCRIPT_THIS(iface);
 98     LONG ref = InterlockedDecrement(&This->ref);
 99 
100     TRACE("(%p) ref=%d\n", iface, ref);
101 
102     if(!ref) {
103         heap_free(This);
104         unlock_module();
105     }
106 
107     return ref;
108 }
109 
110 static HRESULT WINAPI JScript_SetScriptSite(IActiveScript *iface,
111                                             IActiveScriptSite *pass)
112 {
113     JScript *This = ACTSCRIPT_THIS(iface);
114     FIXME("(%p)->(%p)\n", This, pass);
115     return E_NOTIMPL;
116 }
117 
118 static HRESULT WINAPI JScript_GetScriptSite(IActiveScript *iface, REFIID riid,
119                                             void **ppvObject)
120 {
121     JScript *This = ACTSCRIPT_THIS(iface);
122     FIXME("(%p)->()\n", This);
123     return E_NOTIMPL;
124 }
125 
126 static HRESULT WINAPI JScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE ss)
127 {
128     JScript *This = ACTSCRIPT_THIS(iface);
129     FIXME("(%p)->(%d)\n", This, ss);
130     return E_NOTIMPL;
131 }
132 
133 static HRESULT WINAPI JScript_GetScriptState(IActiveScript *iface, SCRIPTSTATE *pssState)
134 {
135     JScript *This = ACTSCRIPT_THIS(iface);
136     FIXME("(%p)->(%p)\n", This, pssState);
137     return E_NOTIMPL;
138 }
139 
140 static HRESULT WINAPI JScript_Close(IActiveScript *iface)
141 {
142     JScript *This = ACTSCRIPT_THIS(iface);
143     FIXME("(%p)->()\n", This);
144     return E_NOTIMPL;
145 }
146 
147 static HRESULT WINAPI JScript_AddNamedItem(IActiveScript *iface,
148                                            LPCOLESTR pstrName, DWORD dwFlags)
149 {
150     JScript *This = ACTSCRIPT_THIS(iface);
151     FIXME("(%p)->(%s %x)\n", This, debugstr_w(pstrName), dwFlags);
152     return E_NOTIMPL;
153 }
154 
155 static HRESULT WINAPI JScript_AddTypeLib(IActiveScript *iface, REFGUID rguidTypeLib,
156                                          DWORD dwMajor, DWORD dwMinor, DWORD dwFlags)
157 {
158     JScript *This = ACTSCRIPT_THIS(iface);
159     FIXME("(%p)->()\n", This);
160     return E_NOTIMPL;
161 }
162 
163 static HRESULT WINAPI JScript_GetScriptDispatch(IActiveScript *iface, LPCOLESTR pstrItemName,
164                                                 IDispatch **ppdisp)
165 {
166     JScript *This = ACTSCRIPT_THIS(iface);
167     FIXME("(%p)->()\n", This);
168     return E_NOTIMPL;
169 }
170 
171 static HRESULT WINAPI JScript_GetCurrentScriptThreadID(IActiveScript *iface,
172                                                        SCRIPTTHREADID *pstridThread)
173 {
174     JScript *This = ACTSCRIPT_THIS(iface);
175     FIXME("(%p)->()\n", This);
176     return E_NOTIMPL;
177 }
178 
179 static HRESULT WINAPI JScript_GetScriptThreadID(IActiveScript *iface,
180                                                 DWORD dwWin32ThreadId, SCRIPTTHREADID *pstidThread)
181 {
182     JScript *This = ACTSCRIPT_THIS(iface);
183     FIXME("(%p)->()\n", This);
184     return E_NOTIMPL;
185 }
186 
187 static HRESULT WINAPI JScript_GetScriptThreadState(IActiveScript *iface,
188         SCRIPTTHREADID stidThread, SCRIPTTHREADSTATE *pstsState)
189 {
190     JScript *This = ACTSCRIPT_THIS(iface);
191     FIXME("(%p)->()\n", This);
192     return E_NOTIMPL;
193 }
194 
195 static HRESULT WINAPI JScript_InterruptScriptThread(IActiveScript *iface,
196         SCRIPTTHREADID stidThread, const EXCEPINFO *pexcepinfo, DWORD dwFlags)
197 {
198     JScript *This = ACTSCRIPT_THIS(iface);
199     FIXME("(%p)->()\n", This);
200     return E_NOTIMPL;
201 }
202 
203 static HRESULT WINAPI JScript_Clone(IActiveScript *iface, IActiveScript **ppscript)
204 {
205     JScript *This = ACTSCRIPT_THIS(iface);
206     FIXME("(%p)->()\n", This);
207     return E_NOTIMPL;
208 }
209 
210 #undef ACTSCRIPT_THIS
211 
212 static const IActiveScriptVtbl JScriptVtbl = {
213     JScript_QueryInterface,
214     JScript_AddRef,
215     JScript_Release,
216     JScript_SetScriptSite,
217     JScript_GetScriptSite,
218     JScript_SetScriptState,
219     JScript_GetScriptState,
220     JScript_Close,
221     JScript_AddNamedItem,
222     JScript_AddTypeLib,
223     JScript_GetScriptDispatch,
224     JScript_GetCurrentScriptThreadID,
225     JScript_GetScriptThreadID,
226     JScript_GetScriptThreadState,
227     JScript_InterruptScriptThread,
228     JScript_Clone
229 };
230 
231 #define ASPARSE_THIS(iface) DEFINE_THIS(JScript, IActiveScriptParse, iface)
232 
233 static HRESULT WINAPI JScriptParse_QueryInterface(IActiveScriptParse *iface, REFIID riid, void **ppv)
234 {
235     JScript *This = ASPARSE_THIS(iface);
236     return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
237 }
238 
239 static ULONG WINAPI JScriptParse_AddRef(IActiveScriptParse *iface)
240 {
241     JScript *This = ASPARSE_THIS(iface);
242     return IActiveScript_AddRef(ACTSCRIPT(This));
243 }
244 
245 static ULONG WINAPI JScriptParse_Release(IActiveScriptParse *iface)
246 {
247     JScript *This = ASPARSE_THIS(iface);
248     return IActiveScript_Release(ACTSCRIPT(This));
249 }
250 
251 static HRESULT WINAPI JScriptParse_InitNew(IActiveScriptParse *iface)
252 {
253     JScript *This = ASPARSE_THIS(iface);
254     FIXME("(%p)\n", This);
255     return E_NOTIMPL;
256 }
257 
258 static HRESULT WINAPI JScriptParse_AddScriptlet(IActiveScriptParse *iface,
259         LPCOLESTR pstrDefaultName, LPCOLESTR pstrCode, LPCOLESTR pstrItemName,
260         LPCOLESTR pstrSubItemName, LPCOLESTR pstrEventName, LPCOLESTR pstrDelimiter,
261         DWORD dwSourceContextCookie, ULONG ulStartingLineNumber, DWORD dwFlags,
262         BSTR *pbstrName, EXCEPINFO *pexcepinfo)
263 {
264     JScript *This = ASPARSE_THIS(iface);
265     FIXME("(%p)->(%s %s %s %s %s %s %x %u %x %p %p)\n", This, debugstr_w(pstrDefaultName),
266           debugstr_w(pstrCode), debugstr_w(pstrItemName), debugstr_w(pstrSubItemName),
267           debugstr_w(pstrEventName), debugstr_w(pstrDelimiter), dwSourceContextCookie,
268           ulStartingLineNumber, dwFlags, pbstrName, pexcepinfo);
269     return E_NOTIMPL;
270 }
271 
272 static HRESULT WINAPI JScriptParse_ParseScriptText(IActiveScriptParse *iface,
273         LPCOLESTR pstrCode, LPCOLESTR pstrItemName, IUnknown *punkContext,
274         LPCOLESTR pstrDelimiter, DWORD dwSourceContextCookie, ULONG ulStartingLine,
275         DWORD dwFlags, VARIANT *pvarResult, EXCEPINFO *pexcepinfo)
276 {
277     JScript *This = ASPARSE_THIS(iface);
278     FIXME("(%p)->(%s %s %p %s %x %u %x %p %p)\n", This, debugstr_w(pstrCode),
279           debugstr_w(pstrItemName), punkContext, debugstr_w(pstrDelimiter),
280           dwSourceContextCookie, ulStartingLine, dwFlags, pvarResult, pexcepinfo);
281     return E_NOTIMPL;
282 }
283 
284 #undef ASPARSE_THIS
285 
286 static const IActiveScriptParseVtbl JScriptParseVtbl = {
287     JScriptParse_QueryInterface,
288     JScriptParse_AddRef,
289     JScriptParse_Release,
290     JScriptParse_InitNew,
291     JScriptParse_AddScriptlet,
292     JScriptParse_ParseScriptText
293 };
294 
295 #define ASPARSEPROC_THIS(iface) DEFINE_THIS(JScript, IActiveScriptParse, iface)
296 
297 static HRESULT WINAPI JScriptParseProcedure_QueryInterface(IActiveScriptParseProcedure2 *iface, REFIID riid, void **ppv)
298 {
299     JScript *This = ASPARSEPROC_THIS(iface);
300     return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
301 }
302 
303 static ULONG WINAPI JScriptParseProcedure_AddRef(IActiveScriptParseProcedure2 *iface)
304 {
305     JScript *This = ASPARSEPROC_THIS(iface);
306     return IActiveScript_AddRef(ACTSCRIPT(This));
307 }
308 
309 static ULONG WINAPI JScriptParseProcedure_Release(IActiveScriptParseProcedure2 *iface)
310 {
311     JScript *This = ASPARSEPROC_THIS(iface);
312     return IActiveScript_Release(ACTSCRIPT(This));
313 }
314 
315 static HRESULT WINAPI JScriptParseProcedure_ParseProcedureText(IActiveScriptParseProcedure2 *iface,
316         LPCOLESTR pstrCode, LPCOLESTR pstrFormalParams, LPCOLESTR pstrProcedureName,
317         LPCOLESTR pstrItemName, IUnknown *punkContext, LPCOLESTR pstrDelimiter,
318         DWORD dwSourceContextCookie, ULONG ulStartingLineNumber, DWORD dwFlags, IDispatch **ppdisp)
319 {
320     JScript *This = ASPARSEPROC_THIS(iface);
321     FIXME("(%p)->()\n", This);
322     return E_NOTIMPL;
323 }
324 
325 #undef ASPARSEPROC_THIS
326 
327 static const IActiveScriptParseProcedure2Vtbl JScriptParseProcedureVtbl = {
328     JScriptParseProcedure_QueryInterface,
329     JScriptParseProcedure_AddRef,
330     JScriptParseProcedure_Release,
331     JScriptParseProcedure_ParseProcedureText,
332 };
333 
334 #define ACTSCPPROP_THIS(iface) DEFINE_THIS(JScript, IActiveScriptProperty, iface)
335 
336 static HRESULT WINAPI JScriptProperty_QueryInterface(IActiveScriptProperty *iface, REFIID riid, void **ppv)
337 {
338     JScript *This = ACTSCPPROP_THIS(iface);
339     return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
340 }
341 
342 static ULONG WINAPI JScriptProperty_AddRef(IActiveScriptProperty *iface)
343 {
344     JScript *This = ACTSCPPROP_THIS(iface);
345     return IActiveScript_AddRef(ACTSCRIPT(This));
346 }
347 
348 static ULONG WINAPI JScriptProperty_Release(IActiveScriptProperty *iface)
349 {
350     JScript *This = ACTSCPPROP_THIS(iface);
351     return IActiveScript_Release(ACTSCRIPT(This));
352 }
353 
354 static HRESULT WINAPI JScriptProperty_GetProperty(IActiveScriptProperty *iface, DWORD dwProperty,
355         VARIANT *pvarIndex, VARIANT *pvarValue)
356 {
357     JScript *This = ACTSCPPROP_THIS(iface);
358     FIXME("(%p)->(%x %p %p)\n", This, dwProperty, pvarIndex, pvarValue);
359     return E_NOTIMPL;
360 }
361 
362 static HRESULT WINAPI JScriptProperty_SetProperty(IActiveScriptProperty *iface, DWORD dwProperty,
363         VARIANT *pvarIndex, VARIANT *pvarValue)
364 {
365     JScript *This = ACTSCPPROP_THIS(iface);
366     FIXME("(%p)->(%x %p %p)\n", This, dwProperty, pvarIndex, pvarValue);
367     return E_NOTIMPL;
368 }
369 
370 #undef ACTSCPPROP_THIS
371 
372 static const IActiveScriptPropertyVtbl JScriptPropertyVtbl = {
373     JScriptProperty_QueryInterface,
374     JScriptProperty_AddRef,
375     JScriptProperty_Release,
376     JScriptProperty_GetProperty,
377     JScriptProperty_SetProperty
378 };
379 
380 #define OBJSAFETY_THIS(iface) DEFINE_THIS(JScript, IObjectSafety, iface)
381 
382 static HRESULT WINAPI JScriptSafety_QueryInterface(IObjectSafety *iface, REFIID riid, void **ppv)
383 {
384     JScript *This = OBJSAFETY_THIS(iface);
385     return IActiveScript_QueryInterface(ACTSCRIPT(This), riid, ppv);
386 }
387 
388 static ULONG WINAPI JScriptSafety_AddRef(IObjectSafety *iface)
389 {
390     JScript *This = OBJSAFETY_THIS(iface);
391     return IActiveScript_AddRef(ACTSCRIPT(This));
392 }
393 
394 static ULONG WINAPI JScriptSafety_Release(IObjectSafety *iface)
395 {
396     JScript *This = OBJSAFETY_THIS(iface);
397     return IActiveScript_Release(ACTSCRIPT(This));
398 }
399 
400 #define SUPPORTED_OPTIONS (INTERFACESAFE_FOR_UNTRUSTED_DATA|INTERFACE_USES_DISPEX|INTERFACE_USES_SECURITY_MANAGER)
401 
402 static HRESULT WINAPI JScriptSafety_GetInterfaceSafetyOptions(IObjectSafety *iface, REFIID riid,
403         DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions)
404 {
405     JScript *This = OBJSAFETY_THIS(iface);
406 
407     TRACE("(%p)->(%s %p %p)\n", This, debugstr_guid(riid), pdwSupportedOptions, pdwEnabledOptions);
408 
409     if(!pdwSupportedOptions || !pdwEnabledOptions)
410         return E_POINTER;
411 
412     *pdwSupportedOptions = SUPPORTED_OPTIONS;
413     *pdwEnabledOptions = This->safeopt;
414 
415     return S_OK;
416 }
417 
418 static HRESULT WINAPI JScriptSafety_SetInterfaceSafetyOptions(IObjectSafety *iface, REFIID riid,
419         DWORD dwOptionSetMask, DWORD dwEnabledOptions)
420 {
421     JScript *This = OBJSAFETY_THIS(iface);
422 
423     TRACE("(%p)->(%s %x %x)\n", This, debugstr_guid(riid), dwOptionSetMask, dwEnabledOptions);
424 
425     if(dwOptionSetMask & ~SUPPORTED_OPTIONS)
426         return E_FAIL;
427 
428     This->safeopt = dwEnabledOptions & dwEnabledOptions;
429     return S_OK;
430 }
431 
432 #undef OBJSAFETY_THIS
433 
434 static const IObjectSafetyVtbl JScriptSafetyVtbl = {
435     JScriptSafety_QueryInterface,
436     JScriptSafety_AddRef,
437     JScriptSafety_Release,
438     JScriptSafety_GetInterfaceSafetyOptions,
439     JScriptSafety_SetInterfaceSafetyOptions
440 };
441 
442 HRESULT WINAPI JScriptFactory_CreateInstance(IClassFactory *iface, IUnknown *pUnkOuter,
443                                              REFIID riid, void **ppv)
444 {
445     JScript *ret;
446     HRESULT hres;
447 
448     TRACE("(%p %s %p)\n", pUnkOuter, debugstr_guid(riid), ppv);
449 
450     lock_module();
451 
452     ret = heap_alloc(sizeof(*ret));
453 
454     ret->lpIActiveScriptVtbl                 = &JScriptVtbl;
455     ret->lpIActiveScriptParseVtbl            = &JScriptParseVtbl;
456     ret->lpIActiveScriptParseProcedure2Vtbl  = &JScriptParseProcedureVtbl;
457     ret->lpIActiveScriptPropertyVtbl         = &JScriptPropertyVtbl;
458     ret->lpIObjectSafetyVtbl                 = &JScriptSafetyVtbl;
459     ret->ref = 1;
460     ret->safeopt = INTERFACE_USES_DISPEX;
461 
462     hres = IActiveScript_QueryInterface(ACTSCRIPT(ret), riid, ppv);
463     IActiveScript_Release(ACTSCRIPT(ret));
464     return hres;
465 }
466 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.