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#pragma makedep typelib
20
21#include "ihost_dispid.h"
22
23import "oaidl.idl";
24
25[
26    uuid(60254ca0-953b-11cf-8c96-00aa00b8708c),
27    version(5.6),
28]
29library IHost
30{
31    importlib("stdole2.tlb");
32
33    [
34        odl,
35        uuid(2cc5a9d1-b1e5-11d3-a286-00104bd35090),
36        dual,
37        oleautomation
38    ]
39    interface IArguments2 : IDispatch {
40        [id(DISPID_VALUE)]
41        HRESULT Item(
42            [in] LONG Index,
43            [out, retval] BSTR *out_Value);
44
45        [id(IARGUMENTS2_COUNT_DISPID)]
46        HRESULT Count([out, retval] LONG *out_Count);
47
48        [id(IARGUMENTS2_LENGTH_DISPID), propget]
49        HRESULT length([out, retval] LONG *out_Count);
50    }
51
52    [
53        odl,
54        uuid(53bad8c1-e718-11cf-893d-00a0c9054228),
55        hidden,
56        dual,
57        nonextensible,
58        oleautomation
59    ]
60    interface ITextStream : IDispatch {
61        [id(ITEXTSTREAM_LINE_DISPID), propget]
62        HRESULT Line([out, retval] LONG *Line);
63
64        [id(ITEXTSTREAM_COLUMN_DISPID), propget]
65        HRESULT Column([out, retval] LONG *Column);
66
67        [id(ITEXTSTREAM_ATENDOFSTREAM_DISPID), propget]
68        HRESULT AtEndOfStream([out, retval] VARIANT_BOOL *EOS);
69
70        [id(ITEXTSTREAM_ATENDOFLINE_DISPID), propget]
71        HRESULT AtEndOfLine([out, retval] VARIANT_BOOL *EOL);
72
73        [id(ITEXTSTREAM_READ_DISPID)]
74        HRESULT Read(
75            [in] LONG Characters,
76            [out, retval] BSTR *Text);
77
78        [id(ITEXTSTREAM_READLINE_DISPID)]
79        HRESULT ReadLine([out, retval] BSTR *Text);
80
81        [id(ITEXTSTREAM_READALL_DISPID)]
82        HRESULT ReadAll([out, retval] BSTR *Text);
83
84        [id(ITEXTSTREAM_WRITE_DISPID)]
85        HRESULT Write([in] BSTR Text);
86
87        [id(ITEXTSTREAM_WRITELINE_DISPID)]
88        HRESULT WriteLine([in, optional, defaultvalue("")] BSTR Text);
89
90        [id(ITEXTSTREAM_WRITEBLANKLINES_DISPID)]
91        HRESULT WriteBlankLines([in] LONG Lines);
92
93        [id(ITEXTSTREAM_SKIP_DISPID)]
94        HRESULT Skip([in] LONG Characters);
95
96        [id(ITEXTSTREAM_SKIPLINE_DISPID)]
97        HRESULT SkipLine();
98
99        [id(ITEXTSTREAM_CLOSE_DISPID)]
100        HRESULT Close();
101    }
102
103    [
104        odl,
105        uuid(91afbd1b-5feb-43f5-b028-e2ca960617ec),
106        dual,
107        oleautomation
108    ]
109    interface IHost : IDispatch {
110        [id(IHOST_NAME_DISPID), propget]
111        HRESULT Name([out, retval] BSTR *out_Name);
112
113        [id(IHOST_APPLICATION_DISPID), propget]
114        HRESULT Application([out, retval] IDispatch **out_Dispatch);
115
116        [id(IHOST_FULLNAME_DISPID), propget]
117        HRESULT FullName([out, retval] BSTR *out_Path);
118
119        [id(IHOST_PATH_DISPID), propget]
120        HRESULT Path([out, retval] BSTR* out_Path);
121
122        [id(IHOST_INTERACTIVE_DISPID), propget]
123        HRESULT Interactive([out, retval] VARIANT_BOOL *out_Interactive);
124
125        [id(IHOST_INTERACTIVE_DISPID), propput]
126        HRESULT Interactive([in] VARIANT_BOOL out_Interactive);
127
128        [id(IHOST_QUIT_DISPID)]
129        HRESULT Quit([in, optional, defaultvalue(0)] int ExitCode);
130
131        [id(IHOST_SCRIPTNAME_DISPID), propget]
132        HRESULT ScriptName([out, retval] BSTR *out_ScriptName);
133
134        [id(IHOST_SCRIPTFULLNAME_DISPID), propget]
135        HRESULT ScriptFullName([out, retval] BSTR* out_ScriptFullName);
136
137        [id(IHOST_ARGUMENTS_DISPID), propget]
138        HRESULT Arguments([out, retval] IArguments2 **out_Arguments);
139
140        [id(IHOST_VERSION_DISPID), propget]
141        HRESULT Version([out, retval] BSTR *out_Version);
142
143        [id(IHOST_BUILDVERSION_DISPID), propget]
144        HRESULT BuildVersion([out, retval] int *out_Build);
145
146        [id(IHOST_TIMEOUT_DISPID), propget]
147        HRESULT Timeout([out, retval] LONG *out_Timeout);
148
149        [id(IHOST_TIMEOUT_DISPID), propput]
150        HRESULT Timeout([in] LONG out_Timeout);
151
152        [id(IHOST_CREATEOBJECT_DISPID)]
153        HRESULT CreateObject(
154                [in] BSTR ProgID,
155                [in, optional, defaultvalue("")] BSTR Prefix,
156                [out, retval] IDispatch **out_Dispatch);
157
158        [id(IHOST_ECHO_DISPID), vararg]
159        HRESULT Echo([in] SAFEARRAY(VARIANT) pArgs);
160
161        [id(IHOST_GETOBJECT_DISPID)]
162        HRESULT GetObject(
163            [in] BSTR Pathname,
164            [in, optional, defaultvalue("")] BSTR ProgID,
165            [in, optional, defaultvalue("")] BSTR Prefix,
166            [out, retval] IDispatch **out_Dispatch);
167
168        [id(IHOST_DISCONNECTOBJECT_DISPID)]
169        HRESULT DisconnectObject([in] IDispatch *Object);
170
171        [id(IHOST_SLEEP_DISPID)]
172        HRESULT Sleep([in] LONG Time);
173
174        [id(IHOST_CONNECTOBJECT_DISPID)]
175        HRESULT ConnectObject(
176            [in] IDispatch *Object,
177            [in] BSTR Prefix);
178
179        [id(IHOST_STDIN_DISPID), propget]
180        HRESULT StdIn([out, retval] ITextStream **out_ppts);
181
182        [id(IHOST_STDOUT_DISPID), propget]
183        HRESULT StdOut([out, retval] ITextStream **ppts);
184
185        [id(IHOST_STDERR_DISPID), propget]
186        HRESULT StdErr([out, retval] ITextStream **ppts);
187    }
188}
189