xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/windows/ole.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * Authors: Stewart Gordon
7  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8  * Source: $(DRUNTIMESRC core/sys/windows/_ole.d)
9  */
10 module core.sys.windows.ole;
11 version (Windows):
12 @system:
13 pragma(lib, "ole32");
14 
15 import core.sys.windows.windef, core.sys.windows.wingdi, core.sys.windows.uuid;
16 
17 alias LPCSTR OLE_LPCSTR;
18 
19 /+#define LRESULT LONG
20 #define HGLOBAL HANDLE+/
21 
22 enum {
23     OT_LINK = 1,
24     OT_EMBEDDED,
25     OT_STATIC
26 }
27 
28 enum OLEVERB_PRIMARY = 0;
29 enum OF_SET          = 1;
30 enum OF_GET          = 2;
31 enum OF_HANDLER      = 4;
32 
33 struct OLETARGETDEVICE {
34     USHORT otdDeviceNameOffset;
35     USHORT otdDriverNameOffset;
36     USHORT otdPortNameOffset;
37     USHORT otdExtDevmodeOffset;
38     USHORT otdExtDevmodeSize;
39     USHORT otdEnvironmentOffset;
40     USHORT otdEnvironmentSize;
41     BYTE   _otdData;
42     BYTE*  otdData() return { return &_otdData; }
43 }
44 alias OLETARGETDEVICE* LPOLETARGETDEVICE;
45 
46 enum OLESTATUS {
47     OLE_OK,
48     OLE_WAIT_FOR_RELEASE,
49     OLE_BUSY,
50     OLE_ERROR_PROTECT_ONLY,
51     OLE_ERROR_MEMORY,
52     OLE_ERROR_STREAM,
53     OLE_ERROR_STATIC,
54     OLE_ERROR_BLANK,
55     OLE_ERROR_DRAW,
56     OLE_ERROR_METAFILE,
57     OLE_ERROR_ABORT,
58     OLE_ERROR_CLIPBOARD,
59     OLE_ERROR_FORMAT,
60     OLE_ERROR_OBJECT,
61     OLE_ERROR_OPTION,
62     OLE_ERROR_PROTOCOL,
63     OLE_ERROR_ADDRESS,
64     OLE_ERROR_NOT_EQUAL,
65     OLE_ERROR_HANDLE,
66     OLE_ERROR_GENERIC,
67     OLE_ERROR_CLASS,
68     OLE_ERROR_SYNTAX,
69     OLE_ERROR_DATATYPE,
70     OLE_ERROR_PALETTE,
71     OLE_ERROR_NOT_LINK,
72     OLE_ERROR_NOT_EMPTY,
73     OLE_ERROR_SIZE,
74     OLE_ERROR_DRIVE,
75     OLE_ERROR_NETWORK,
76     OLE_ERROR_NAME,
77     OLE_ERROR_TEMPLATE,
78     OLE_ERROR_NEW,
79     OLE_ERROR_EDIT,
80     OLE_ERROR_OPEN,
81     OLE_ERROR_NOT_OPEN,
82     OLE_ERROR_LAUNCH,
83     OLE_ERROR_COMM,
84     OLE_ERROR_TERMINATE,
85     OLE_ERROR_COMMAND,
86     OLE_ERROR_SHOW,
87     OLE_ERROR_DOVERB,
88     OLE_ERROR_ADVISE_NATIVE,
89     OLE_ERROR_ADVISE_PICT,
90     OLE_ERROR_ADVISE_RENAME,
91     OLE_ERROR_POKE_NATIVE,
92     OLE_ERROR_REQUEST_NATIVE,
93     OLE_ERROR_REQUEST_PICT,
94     OLE_ERROR_SERVER_BLOCKED,
95     OLE_ERROR_REGISTRATION,
96     OLE_ERROR_ALREADY_REGISTERED,
97     OLE_ERROR_TASK,
98     OLE_ERROR_OUTOFDATE,
99     OLE_ERROR_CANT_UPDATE_CLIENT,
100     OLE_ERROR_UPDATE,
101     OLE_ERROR_SETDATA_FORMAT,
102     OLE_ERROR_STATIC_FROM_OTHER_OS,
103     OLE_ERROR_FILE_VER,
104     OLE_WARN_DELETE_DATA = 1000
105 }
106 
107 enum OLE_NOTIFICATION {
108     OLE_CHANGED,
109     OLE_SAVED,
110     OLE_CLOSED,
111     OLE_RENAMED,
112     OLE_QUERY_PAINT,
113     OLE_RELEASE,
114     OLE_QUERY_RETRY
115 }
116 
117 enum OLE_RELEASE_METHOD {
118     OLE_NONE,
119     OLE_DELETE,
120     OLE_LNKPASTE,
121     OLE_EMBPASTE,
122     OLE_SHOW,
123     OLE_RUN,
124     OLE_ACTIVATE,
125     OLE_UPDATE,
126     OLE_CLOSE,
127     OLE_RECONNECT,
128     OLE_SETUPDATEOPTIONS,
129     OLE_SERVERUNLAUNCH,
130     OLE_LOADFROMSTREAM,
131     OLE_SETDATA,
132     OLE_REQUESTDATA,
133     OLE_OTHER,
134     OLE_CREATE,
135     OLE_CREATEFROMTEMPLATE,
136     OLE_CREATELINKFROMFILE,
137     OLE_COPYFROMLNK,
138     OLE_CREATEFROMFILE,
139     OLE_CREATEINVISIBLE
140 }
141 
142 enum OLEOPT_RENDER {
143     olerender_none,
144     olerender_draw,
145     olerender_format
146 }
147 
148 alias WORD OLECLIPFORMAT;
149 
150 enum OLEOPT_UPDATE {
151     oleupdate_always,
152     oleupdate_onsave,
153     oleupdate_oncall,
154 // #ifdef OLE_INTERNAL
155     oleupdate_onclose
156 // #endif
157 }
158 
159 mixin DECLARE_HANDLE!("HOBJECT");
160 alias LONG_PTR LHSERVER, LHCLIENTDOC, LHSERVERDOC;
161 
162 struct OLEOBJECTVTBL {
163     extern (Windows) {
164         void* function(LPOLEOBJECT, OLE_LPCSTR) QueryProtocol;
165         OLESTATUS function(LPOLEOBJECT) Release;
166         OLESTATUS function(LPOLEOBJECT, BOOL) Show;
167         OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL) DoVerb;
168         OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*) GetData;
169         OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT, HANDLE) SetData;
170         OLESTATUS function(LPOLEOBJECT, HGLOBAL) SetTargetDevice;
171         OLESTATUS function(LPOLEOBJECT, RECT*) SetBounds;
172         OLECLIPFORMAT function(LPOLEOBJECT, OLECLIPFORMAT) EnumFormats;
173         OLESTATUS function(LPOLEOBJECT, LOGPALETTE*) SetColorScheme;
174 //#ifndef SERVERONLY
175         OLESTATUS function(LPOLEOBJECT) Delete;
176         OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, OLE_LPCSTR) SetHostNames;
177         OLESTATUS function(LPOLEOBJECT, LPOLESTREAM) SaveToStream;
178         OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR,
179           LPOLEOBJECT*) Clone;
180         OLESTATUS function(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, OLE_LPCSTR,
181           LPOLEOBJECT*) CopyFromLink;
182         OLESTATUS function(LPOLEOBJECT, LPOLEOBJECT) Equal;
183         OLESTATUS function(LPOLEOBJECT) CopyToClipboard;
184         OLESTATUS function(LPOLEOBJECT, HDC, RECT*, RECT*, HDC) Draw;
185         OLESTATUS function(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, RECT*)
186           Activate;
187         OLESTATUS function(LPOLEOBJECT, HGLOBAL, UINT) Execute;
188         OLESTATUS function(LPOLEOBJECT) Close;
189         OLESTATUS function(LPOLEOBJECT) Update;
190         OLESTATUS function(LPOLEOBJECT) Reconnect;
191         OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR, LPOLECLIENT, LHCLIENTDOC,
192           OLE_LPCSTR, LPOLEOBJECT*) ObjectConvert;
193         OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE*) GetLinkUpdateOptions;
194         OLESTATUS function(LPOLEOBJECT, OLEOPT_UPDATE) SetLinkUpdateOptions;
195         OLESTATUS function(LPOLEOBJECT, OLE_LPCSTR) Rename;
196         OLESTATUS function(LPOLEOBJECT, LPSTR, UINT*) QueryName;
197         OLESTATUS function(LPOLEOBJECT, LONG*) QueryType;
198         OLESTATUS function(LPOLEOBJECT, RECT*) QueryBounds;
199         OLESTATUS function(LPOLEOBJECT, DWORD*) QuerySize;
200         OLESTATUS function(LPOLEOBJECT) QueryOpen;
201         OLESTATUS function(LPOLEOBJECT) QueryOutOfDate;
202         OLESTATUS function(LPOLEOBJECT) QueryReleaseStatus;
203         OLESTATUS function(LPOLEOBJECT) QueryReleaseError;
204         OLE_RELEASE_METHOD function(LPOLEOBJECT) QueryReleaseMethod;
205         OLESTATUS function(LPOLEOBJECT, OLECLIPFORMAT) RequestData;
206         OLESTATUS function(LPOLEOBJECT, UINT, LONG*) ObjectLong;
207         OLESTATUS function(LPOLEOBJECT, HANDLE, LPOLECLIENT, BOOL) ChangeData;
208 //#endif
209     }
210 }
211 alias OLEOBJECTVTBL* LPOLEOBJECTVTBL;
212 
213 //#ifndef OLE_INTERNAL
214 struct OLEOBJECT {
215     LPOLEOBJECTVTBL lpvtbl;
216 }
217 alias OLEOBJECT* LPOLEOBJECT;
218 //#endif
219 
220 struct OLECLIENTVTBL {
221     extern (Windows) int function(LPOLECLIENT, OLE_NOTIFICATION, LPOLEOBJECT) CallBack;
222 }
223 alias OLECLIENTVTBL* LPOLECLIENTVTBL;
224 
225 struct OLECLIENT {
226     LPOLECLIENTVTBL lpvtbl;
227 }
228 alias OLECLIENT* LPOLECLIENT;
229 
230 struct OLESTREAMVTBL {
231     extern (Windows):
232     DWORD function(LPOLESTREAM, void*, DWORD) Get;
233     DWORD function(LPOLESTREAM, void*, DWORD) Put;
234 }
235 alias OLESTREAMVTBL* LPOLESTREAMVTBL;
236 
237 struct OLESTREAM {
238     LPOLESTREAMVTBL lpstbl;
239 }
240 alias OLESTREAM* LPOLESTREAM;
241 
242 enum OLE_SERVER_USE {
243     OLE_SERVER_MULTI,
244     OLE_SERVER_SINGLE
245 }
246 
247 struct OLESERVERVTBL {
248     extern (Windows):
249     OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, LPOLESERVERDOC*)
250       Open;
251     OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR,
252       LPOLESERVERDOC*) Create;
253     OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR,
254       OLE_LPCSTR, LPOLESERVERDOC*) CreateFromTemplate;
255     OLESTATUS function(LPOLESERVER, LHSERVERDOC, OLE_LPCSTR, OLE_LPCSTR,
256       LPOLESERVERDOC*) Edit;
257     OLESTATUS function(LPOLESERVER) Exit;
258     OLESTATUS function(LPOLESERVER) Release;
259     OLESTATUS function(LPOLESERVER, HGLOBAL) Execute;
260 }
261 alias TypeDef!(OLESERVERVTBL*) LPOLESERVERVTBL;
262 
263 struct OLESERVER {
264     LPOLESERVERVTBL lpvtbl;
265 }
266 alias OLESERVER* LPOLESERVER;
267 
268 struct OLESERVERDOCVTBL {
269 extern (Windows):
270     OLESTATUS function(LPOLESERVERDOC) Save;
271     OLESTATUS function(LPOLESERVERDOC) Close;
272     OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, OLE_LPCSTR) SetHostNames;
273     OLESTATUS function(LPOLESERVERDOC, RECT*) SetDocDimensions;
274     OLESTATUS function(LPOLESERVERDOC, OLE_LPCSTR, LPOLEOBJECT*, LPOLECLIENT)
275       GetObject;
276     OLESTATUS function(LPOLESERVERDOC) Release;
277     OLESTATUS function(LPOLESERVERDOC, LOGPALETTE*) SetColorScheme;
278     OLESTATUS function(LPOLESERVERDOC, HGLOBAL) Execute;
279 }
280 alias OLESERVERDOCVTBL* LPOLESERVERDOCVTBL;
281 
282 struct OLESERVERDOC {
283     LPOLESERVERDOCVTBL lpvtbl;
284 }
285 alias OLESERVERDOC* LPOLESERVERDOC;
286 
287 extern (Windows) {
288     OLESTATUS OleDelete(LPOLEOBJECT);
289     OLESTATUS OleRelease(LPOLEOBJECT);
290     OLESTATUS OleSaveToStream(LPOLEOBJECT, LPOLESTREAM);
291     OLESTATUS OleEqual(LPOLEOBJECT, LPOLEOBJECT);
292     OLESTATUS OleCopyToClipboard(LPOLEOBJECT);
293     OLESTATUS OleSetHostNames(LPOLEOBJECT, LPCSTR, LPCSTR);
294     OLESTATUS OleSetTargetDevice(LPOLEOBJECT, HGLOBAL);
295     OLESTATUS OleSetBounds(LPOLEOBJECT, LPCRECT);
296     OLESTATUS OleSetColorScheme(LPOLEOBJECT, const(LOGPALETTE)*);
297     OLESTATUS OleQueryBounds(LPOLEOBJECT, RECT*);
298     OLESTATUS OleQuerySize(LPOLEOBJECT, DWORD*);
299     OLESTATUS OleDraw(LPOLEOBJECT, HDC, LPCRECT, LPCRECT, HDC);
300     OLESTATUS OleQueryOpen(LPOLEOBJECT);
301     OLESTATUS OleActivate(LPOLEOBJECT, UINT, BOOL, BOOL, HWND, LPCRECT);
302     OLESTATUS OleExecute(LPOLEOBJECT, HGLOBAL, UINT);
303     OLESTATUS OleClose(LPOLEOBJECT);
304     OLESTATUS OleUpdate(LPOLEOBJECT);
305     OLESTATUS OleReconnect(LPOLEOBJECT);
306     OLESTATUS OleGetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE*);
307     OLESTATUS OleSetLinkUpdateOptions(LPOLEOBJECT, OLEOPT_UPDATE);
308     void* OleQueryProtocol(LPOLEOBJECT, LPCSTR);
309     OLESTATUS OleQueryReleaseStatus(LPOLEOBJECT);
310     OLESTATUS OleQueryReleaseError(LPOLEOBJECT);
311     OLE_RELEASE_METHOD OleQueryReleaseMethod(LPOLEOBJECT);
312     OLESTATUS OleQueryType(LPOLEOBJECT, LONG*);
313     DWORD OleQueryClientVersion();
314     DWORD OleQueryServerVersion();
315     OLECLIPFORMAT OleEnumFormats(LPOLEOBJECT, OLECLIPFORMAT);
316     OLESTATUS OleGetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE*);
317     OLESTATUS OleSetData(LPOLEOBJECT, OLECLIPFORMAT, HANDLE);
318     OLESTATUS OleQueryOutOfDate(LPOLEOBJECT);
319     OLESTATUS OleRequestData(LPOLEOBJECT, OLECLIPFORMAT);
320     OLESTATUS OleQueryLinkFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT);
321     OLESTATUS OleQueryCreateFromClip(LPCSTR, OLEOPT_RENDER, OLECLIPFORMAT);
322     OLESTATUS OleCreateFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR,
323       LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT);
324     OLESTATUS OleCreateLinkFromClip(LPCSTR, LPOLECLIENT, LHCLIENTDOC, LPCSTR,
325       LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT);
326     OLESTATUS OleCreateFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR,
327       LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT);
328     OLESTATUS OleCreateLinkFromFile(LPCSTR, LPOLECLIENT, LPCSTR, LPCSTR,
329       LPCSTR, LHCLIENTDOC, LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT);
330     OLESTATUS OleLoadFromStream(LPOLESTREAM, LPCSTR, LPOLECLIENT, LHCLIENTDOC,
331       LPCSTR, LPOLEOBJECT*);
332     OLESTATUS OleCreate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC, LPCSTR,
333       LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT);
334     OLESTATUS OleCreateInvisible(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC,
335       LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT, BOOL);
336     OLESTATUS OleCreateFromTemplate(LPCSTR, LPOLECLIENT, LPCSTR, LHCLIENTDOC,
337       LPCSTR, LPOLEOBJECT*, OLEOPT_RENDER, OLECLIPFORMAT);
338     OLESTATUS OleClone(LPOLEOBJECT, LPOLECLIENT, LHCLIENTDOC, LPCSTR,
339       LPOLEOBJECT*);
340     OLESTATUS OleCopyFromLink(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC,
341       LPCSTR, LPOLEOBJECT*);
342     OLESTATUS OleObjectConvert(LPOLEOBJECT, LPCSTR, LPOLECLIENT, LHCLIENTDOC,
343       LPCSTR, LPOLEOBJECT*);
344     OLESTATUS OleRename(LPOLEOBJECT, LPCSTR);
345     OLESTATUS OleQueryName(LPOLEOBJECT, LPSTR, UINT*);
346     OLESTATUS OleRevokeObject(LPOLECLIENT);
347     BOOL OleIsDcMeta(HDC);
348     OLESTATUS OleRegisterClientDoc(LPCSTR, LPCSTR, LONG, LHCLIENTDOC*);
349     OLESTATUS OleRevokeClientDoc(LHCLIENTDOC);
350     OLESTATUS OleRenameClientDoc(LHCLIENTDOC, LPCSTR);
351     OLESTATUS OleRevertClientDoc(LHCLIENTDOC);
352     OLESTATUS OleSavedClientDoc(LHCLIENTDOC);
353     OLESTATUS OleEnumObjects(LHCLIENTDOC, LPOLEOBJECT*);
354     OLESTATUS OleRegisterServer(LPCSTR, LPOLESERVER, LHSERVER*, HINSTANCE,
355       OLE_SERVER_USE);
356     OLESTATUS OleRevokeServer(LHSERVER);
357     OLESTATUS OleBlockServer(LHSERVER);
358     OLESTATUS OleUnblockServer(LHSERVER, BOOL*);
359     OLESTATUS OleLockServer(LPOLEOBJECT, LHSERVER*);
360     OLESTATUS OleUnlockServer(LHSERVER);
361     OLESTATUS OleRegisterServerDoc(LHSERVER, LPCSTR, LPOLESERVERDOC,
362       LHSERVERDOC*);
363     OLESTATUS OleRevokeServerDoc(LHSERVERDOC);
364     OLESTATUS OleRenameServerDoc(LHSERVERDOC, LPCSTR);
365     OLESTATUS OleRevertServerDoc(LHSERVERDOC);
366     OLESTATUS OleSavedServerDoc(LHSERVERDOC);
367 }
368