wscript.exe: Added IHost stub implementation.
[wine] / programs / wscript / host.c
1 /*
2  * Copyright 2010 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 <stdarg.h>
20
21 #define COBJMACROS
22 #define CONST_VTABLE
23
24 #include <windef.h>
25 #include <winbase.h>
26 #include <ole2.h>
27
28 #include "wscript.h"
29
30 #include <wine/debug.h>
31
32 WINE_DEFAULT_DEBUG_CHANNEL(wscript);
33
34 static HRESULT WINAPI Host_QueryInterface(IHost *iface, REFIID riid, void **ppv)
35 {
36     WINE_TRACE("(%s %p)\n", wine_dbgstr_guid(riid), ppv);
37
38     if(IsEqualGUID(&IID_IUnknown, riid)
39        || IsEqualGUID(&IID_IDispatch, riid)
40        || IsEqualGUID(&IID_IHost, riid)) {
41         *ppv = iface;
42         return S_OK;
43     }
44
45     *ppv = NULL;
46     return E_NOINTERFACE;
47 }
48
49 static ULONG WINAPI Host_AddRef(IHost *iface)
50 {
51     return 2;
52 }
53
54 static ULONG WINAPI Host_Release(IHost *iface)
55 {
56     return 1;
57 }
58
59 static HRESULT WINAPI Host_GetTypeInfoCount(IHost *iface, UINT *pctinfo)
60 {
61     WINE_TRACE("(%p)\n", pctinfo);
62     *pctinfo = 1;
63     return S_OK;
64 }
65
66 static HRESULT WINAPI Host_GetTypeInfo(IHost *iface, UINT iTInfo, LCID lcid,
67         ITypeInfo **ppTInfo)
68 {
69     WINE_FIXME("(%x %x %p\n", iTInfo, lcid, ppTInfo);
70     return E_NOTIMPL;
71 }
72
73 static HRESULT WINAPI Host_GetIDsOfNames(IHost *iface, REFIID riid, LPOLESTR *rgszNames,
74         UINT cNames, LCID lcid, DISPID *rgDispId)
75 {
76     WINE_FIXME("(%s %p %d %x %p)\n", wine_dbgstr_guid(riid), rgszNames,
77         cNames, lcid, rgDispId);
78     return E_NOTIMPL;
79 }
80
81 static HRESULT WINAPI Host_Invoke(IHost *iface, DISPID dispIdMember, REFIID riid,
82         LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
83         EXCEPINFO *pExcepInfo, UINT *puArgErr)
84 {
85     WINE_FIXME("(%d %p %p)\n", dispIdMember, pDispParams, pVarResult);
86     return E_NOTIMPL;
87 }
88
89 static HRESULT WINAPI Host_get_Name(IHost *iface, BSTR *out_Name)
90 {
91     WINE_FIXME("(%p)\n", out_Name);
92     return E_NOTIMPL;
93 }
94
95 static HRESULT WINAPI Host_get_Application(IHost *iface, IDispatch **out_Dispatch)
96 {
97     WINE_FIXME("(%p)\n", out_Dispatch);
98     return E_NOTIMPL;
99 }
100
101 static HRESULT WINAPI Host_get_FullName(IHost *iface, BSTR *out_Path)
102 {
103     WINE_FIXME("(%p)\n", out_Path);
104     return E_NOTIMPL;
105 }
106
107 static HRESULT WINAPI Host_get_Path(IHost *iface, BSTR *out_Path)
108 {
109     WINE_FIXME("(%p)\n", out_Path);
110     return E_NOTIMPL;
111 }
112
113 static HRESULT WINAPI Host_get_Interactive(IHost *iface, VARIANT_BOOL *out_Interactive)
114 {
115     WINE_FIXME("(%p)\n", out_Interactive);
116     return E_NOTIMPL;
117 }
118
119 static HRESULT WINAPI Host_put_Interactive(IHost *iface, VARIANT_BOOL v)
120 {
121     WINE_FIXME("(%x)\n", v);
122     return E_NOTIMPL;
123 }
124
125 static HRESULT WINAPI Host_Quit(IHost *iface, int ExitCode)
126 {
127     WINE_FIXME("(%d)\n", ExitCode);
128     return E_NOTIMPL;
129 }
130
131 static HRESULT WINAPI Host_get_ScriptName(IHost *iface, BSTR *out_ScriptName)
132 {
133     WINE_FIXME("(%p)\n", out_ScriptName);
134     return E_NOTIMPL;
135 }
136
137 static HRESULT WINAPI Host_get_ScriptFullName(IHost *iface, BSTR *out_ScriptFullName)
138 {
139     WINE_FIXME("(%p)\n", out_ScriptFullName);
140     return E_NOTIMPL;
141 }
142
143 static HRESULT WINAPI Host_get_Arguments(IHost *iface, IArguments2 **out_Arguments)
144 {
145     WINE_FIXME("(%p)\n", out_Arguments);
146     return E_NOTIMPL;
147 }
148
149 static HRESULT WINAPI Host_get_Version(IHost *iface, BSTR *out_Version)
150 {
151     WINE_FIXME("(%p)\n", out_Version);
152     return E_NOTIMPL;
153 }
154
155 static HRESULT WINAPI Host_get_BuildVersion(IHost *iface, int *out_Build)
156 {
157     WINE_FIXME("(%p)\n", out_Build);
158     return E_NOTIMPL;
159 }
160
161 static HRESULT WINAPI Host_get_Timeout(IHost *iface, LONG *out_Timeout)
162 {
163     WINE_FIXME("(%p)\n", out_Timeout);
164     return E_NOTIMPL;
165 }
166
167 static HRESULT WINAPI Host_put_Timeout(IHost *iface, LONG v)
168 {
169     WINE_FIXME("(%d)\n", v);
170     return E_NOTIMPL;
171 }
172
173 static HRESULT WINAPI Host_CreateObject(IHost *iface, BSTR ProgID, BSTR Prefix,
174         IDispatch **out_Dispatch)
175 {
176     WINE_FIXME("(%s %s %p)\n", wine_dbgstr_w(ProgID), wine_dbgstr_w(Prefix), out_Dispatch);
177     return E_NOTIMPL;
178 }
179
180 static HRESULT WINAPI Host_Echo(IHost *iface, SAFEARRAY *args)
181 {
182     WINE_FIXME("(%p)\n", args);
183     return E_NOTIMPL;
184 }
185
186 static HRESULT WINAPI Host_GetObject(IHost *iface, BSTR Pathname, BSTR ProgID,
187         BSTR Prefix, IDispatch **out_Dispatch)
188 {
189     WINE_FIXME("(%s %s %s %p)\n", wine_dbgstr_w(Pathname), wine_dbgstr_w(ProgID),
190         wine_dbgstr_w(Prefix), out_Dispatch);
191     return E_NOTIMPL;
192 }
193
194 static HRESULT WINAPI Host_DisconnectObject(IHost *iface, IDispatch *Object)
195 {
196     WINE_FIXME("(%p)\n", Object);
197     return E_NOTIMPL;
198 }
199
200 static HRESULT WINAPI Host_Sleep(IHost *iface, LONG Time)
201 {
202     WINE_FIXME("(%d)\n", Time);
203     return E_NOTIMPL;
204 }
205
206 static HRESULT WINAPI Host_ConnectObject(IHost *iface, IDispatch *Object, BSTR Prefix)
207 {
208     WINE_FIXME("(%p %s)\n", Object, wine_dbgstr_w(Prefix));
209     return E_NOTIMPL;
210 }
211
212 static HRESULT WINAPI Host_get_StdIn(IHost *iface, ITextStream **ppts)
213 {
214     WINE_FIXME("(%p)\n", ppts);
215     return E_NOTIMPL;
216 }
217
218 static HRESULT WINAPI Host_get_StdOut(IHost *iface, ITextStream **ppts)
219 {
220     WINE_FIXME("(%p)\n", ppts);
221     return E_NOTIMPL;
222 }
223
224 static HRESULT WINAPI Host_get_StdErr(IHost *iface, ITextStream **ppts)
225 {
226     WINE_FIXME("(%p)\n", ppts);
227     return E_NOTIMPL;
228 }
229
230 static const IHostVtbl HostVtbl = {
231     Host_QueryInterface,
232     Host_AddRef,
233     Host_Release,
234     Host_GetTypeInfoCount,
235     Host_GetTypeInfo,
236     Host_GetIDsOfNames,
237     Host_Invoke,
238     Host_get_Name,
239     Host_get_Application,
240     Host_get_FullName,
241     Host_get_Path,
242     Host_get_Interactive,
243     Host_put_Interactive,
244     Host_Quit,
245     Host_get_ScriptName,
246     Host_get_ScriptFullName,
247     Host_get_Arguments,
248     Host_get_Version,
249     Host_get_BuildVersion,
250     Host_get_Timeout,
251     Host_put_Timeout,
252     Host_CreateObject,
253     Host_Echo,
254     Host_GetObject,
255     Host_DisconnectObject,
256     Host_Sleep,
257     Host_ConnectObject,
258     Host_get_StdIn,
259     Host_get_StdOut,
260     Host_get_StdErr
261 };
262
263 IHost host_obj = { &HostVtbl };