Some more recursive include fixes/optimizations.
[wine.git] / include / ole.h
blob06a2ce58a1a6ef97e7d2f8b5f2d7a3441a27d299
1 /*
2 * ole.h - Declarations for OLESVR and OLECLI
3 */
5 #ifndef __WINE_OLE_H
6 #define __WINE_OLE_H
8 #include "wingdi.h" /* LOGPALETTE */
10 /* FIXME: we need to include wtypes.h mainly, it seems, because we need BSTR.
11 * Normally none of the APIs in ole.h depend on it. It is most likey that they should
12 * be moved to ole2.h (which includes objbase.h and thus wtypes.h) or some other
13 * OLE include
15 #include "wtypes.h"
18 #define OLESTR16(x) x
19 #define OLESTR32(x) L##x /* probably wrong */
20 #define OLESTR WINELIB_NAME(OLESTR)
22 /* object types */
23 #define OT_LINK 1
24 #define OT_EMBEDDED 2
25 #define OT_STATIC 3
27 /* activate verbs */
28 #define OLEVERB_PRIMARY 0
30 typedef enum
32 OLE_OK,
33 OLE_WAIT_FOR_RELEASE,
34 OLE_BUSY,
35 OLE_ERROR_PROTECT_ONLY,
36 OLE_ERROR_MEMORY,
37 OLE_ERROR_STREAM,
38 OLE_ERROR_STATIC,
39 OLE_ERROR_BLANK,
40 OLE_ERROR_DRAW,
41 OLE_ERROR_METAFILE,
42 OLE_ERROR_ABORT,
43 OLE_ERROR_CLIPBOARD,
44 OLE_ERROR_FORMAT,
45 OLE_ERROR_OBJECT,
46 OLE_ERROR_OPTION,
47 OLE_ERROR_PROTOCOL,
48 OLE_ERROR_ADDRESS,
49 OLE_ERROR_NOT_EQUAL,
50 OLE_ERROR_HANDLE,
51 OLE_ERROR_GENERIC,
52 OLE_ERROR_CLASS,
53 OLE_ERROR_SYNTAX,
54 OLE_ERROR_DATATYPE,
55 OLE_ERROR_PALETTE,
56 OLE_ERROR_NOT_LINK,
57 OLE_ERROR_NOT_EMPTY,
58 OLE_ERROR_SIZE,
59 OLE_ERROR_DRIVE,
60 OLE_ERROR_NETWORK,
61 OLE_ERROR_NAME,
62 OLE_ERROR_TEMPLATE,
63 OLE_ERROR_NEW,
64 OLE_ERROR_EDIT,
65 OLE_ERROR_OPEN,
66 OLE_ERROR_NOT_OPEN,
67 OLE_ERROR_LAUNCH,
68 OLE_ERROR_COMM,
69 OLE_ERROR_TERMINATE,
70 OLE_ERROR_COMMAND,
71 OLE_ERROR_SHOW,
72 OLE_ERROR_DOVERB,
73 OLE_ERROR_ADVISE_NATIVE,
74 OLE_ERROR_ADVISE_PICT,
75 OLE_ERROR_ADVISE_RENAME,
76 OLE_ERROR_POKE_NATIVE,
77 OLE_ERROR_REQUEST_NATIVE,
78 OLE_ERROR_REQUEST_PICT,
79 OLE_ERROR_SERVER_BLOCKED,
80 OLE_ERROR_REGISTRATION,
81 OLE_ERROR_ALREADY_REGISTERED,
82 OLE_ERROR_TASK,
83 OLE_ERROR_OUTOFDATE,
84 OLE_ERROR_CANT_UPDATE_CLIENT,
85 OLE_ERROR_UPDATE,
86 OLE_ERROR_SETDATA_FORMAT,
87 OLE_ERROR_STATIC_FROM_OTHER_OS,
88 OLE_WARN_DELETE_DATA = 1000
89 } OLESTATUS;
91 typedef enum {
92 OLE_SERVER_MULTI,
93 OLE_SERVER_SINGLE
94 } OLE_SERVER_USE;
96 typedef enum {
97 OLE_CHANGED,
98 OLE_SAVED,
99 OLE_CLOSED,
100 OLE_RENAMED,
101 OLE_QUERY_PAINT,
102 OLE_RELEASE,
103 OLE_QUERY_RETRY
104 } OLE_NOTIFICATION;
106 typedef enum {
107 olerender_none,
108 olerender_draw,
109 olerender_format
110 } OLEOPT_RENDER;
112 typedef enum {
113 oleupdate_always,
114 oleupdate_onsave,
115 oleupdate_oncall,
116 oleupdate_onclose
117 } OLEOPT_UPDATE;
119 typedef LONG LHSERVER;
120 typedef LONG LHSERVERDOC;
121 typedef LONG LHCLIENTDOC;
122 typedef LONG OLECLIPFORMAT;/* dunno about this type, please change/add */
123 typedef OLEOPT_UPDATE* LPOLEOPT_UPDATE;
125 typedef enum {
126 OLE_NONE, /* none */
127 OLE_DELETE, /* delete object */
128 OLE_LNKPASTE, /* link paste */
129 OLE_EMBPASTE, /* paste(and update) */
130 OLE_SHOW,
131 OLE_RUN,
132 OLE_ACTIVATE,
133 OLE_UPDATE,
134 OLE_CLOSE,
135 OLE_RECONNECT,
136 OLE_SETUPDATEOPTIONS,
137 OLE_SERVERRUNLAUNCH, /* unlaunch (terminate?) server */
138 OLE_LOADFROMSTREAM, /* (auto reconnect) */
139 OLE_SETDATA, /* OleSetData */
140 OLE_REQUESTDATA, /* OleRequestData */
141 OLE_OTHER,
142 OLE_CREATE,
143 OLE_CREATEFROMTEMPLATE,
144 OLE_CREATELINKFROMFILE,
145 OLE_COPYFROMLNK,
146 OLE_CREATREFROMFILE,
147 OLE_CREATEINVISIBLE
148 } OLE_RELEASE_METHOD;
150 typedef struct _OLETARGETDEVICE {
151 UINT16 otdDeviceNameOffset;
152 UINT16 otdDriverNameOffset;
153 UINT16 otdPortNameOffset;
154 UINT16 otdExtDevmodeOffset;
155 UINT16 otdExtDevmodeSize;
156 UINT16 otdEnvironmentOffset;
157 UINT16 otdEnvironmentSize;
158 BYTE otdData[1];
159 /* ... */
160 } OLETARGETDEVICE;
161 typedef struct _OLESTREAM* LPOLESTREAM;
162 typedef struct _OLESTREAMVTBL {
163 DWORD (CALLBACK *Get)(LPOLESTREAM,LPSTR,DWORD);
164 DWORD (CALLBACK *Put)(LPOLESTREAM,LPSTR,DWORD);
165 } OLESTREAMVTBL;
166 typedef OLESTREAMVTBL* LPOLESTREAMVTBL;
167 typedef struct _OLESTREAM {
168 LPOLESTREAMVTBL lpstbl;
169 } OLESTREAM;
170 typedef struct _OLESERVERDOC* LPOLESERVERDOC;
171 typedef struct _OLEOBJECT* LPOLEOBJECT;
172 typedef struct _OLECLIENT* LPOLECLIENT;
173 typedef struct _OLESERVERDOCVTBL {
174 OLESTATUS (CALLBACK *Save)(LPOLESERVERDOC);
175 OLESTATUS (CALLBACK *Close)(LPOLESERVERDOC);
176 OLESTATUS (CALLBACK *SetHostNames)(LPOLESERVERDOC,LPCOLESTR16,LPCOLESTR16);
177 OLESTATUS (CALLBACK *SetDocDimensions)(LPOLESERVERDOC,LPRECT16);
178 #ifdef __WINE__
179 /* GetObject is a WINELIB_NAME macro so it cannot be used in Wine itself */
180 OLESTATUS (CALLBACK *pGetObject)(LPOLESERVERDOC,LPCOLESTR16,LPOLEOBJECT*,LPOLECLIENT);
181 #else
182 OLESTATUS (CALLBACK *GetObject)(LPOLESERVERDOC,LPCOLESTR16,LPOLEOBJECT*,LPOLECLIENT);
183 #endif
184 OLESTATUS (CALLBACK *Release)(LPOLESERVERDOC);
185 OLESTATUS (CALLBACK *SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE);
186 OLESTATUS (CALLBACK *Execute)(LPOLESERVERDOC,HGLOBAL16);
187 } OLESERVERDOCVTBL;
188 typedef OLESERVERDOCVTBL* LPOLESERVERDOCVTBL;
189 typedef struct _OLESERVERDOC {
190 LPOLESERVERDOCVTBL lpvtbl;
191 /* server provided state info */
192 } OLESERVERDOC;
194 typedef struct _OLESERVER* LPOLESERVER;
195 typedef struct _OLESERVERVTBL {
196 OLESTATUS (CALLBACK *Open)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPOLESERVERDOC *);
197 OLESTATUS (CALLBACK *Create)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC*);
198 OLESTATUS (CALLBACK *CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC *);
199 OLESTATUS (CALLBACK *Edit)(LPOLESERVER,LHSERVERDOC,LPCOLESTR16,LPCOLESTR16,LPOLESERVERDOC *);
200 OLESTATUS (CALLBACK *Exit)(LPOLESERVER);
201 OLESTATUS (CALLBACK *Release)(LPOLESERVER);
202 OLESTATUS (CALLBACK *Execute)(LPOLESERVER);
203 } OLESERVERVTBL;
204 typedef OLESERVERVTBL *LPOLESERVERVTBL;
205 typedef struct _OLESERVER {
206 LPOLESERVERVTBL lpvtbl;
207 /* server specific data */
208 } OLESERVER;
209 typedef struct _OLECLIENTVTBL {
210 int (CALLBACK *CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT);
211 } OLECLIENTVTBL;
212 typedef OLECLIENTVTBL *LPOLECLIENTVTBL;
214 typedef struct _OLECLIENT {
215 LPOLECLIENTVTBL lpvtbl;
216 /* client data... */
217 } OLECLIENT;
219 typedef struct _OLEOBJECTVTBL {
220 void * (CALLBACK *QueryProtocol)(LPOLEOBJECT,LPCOLESTR16);
221 OLESTATUS (CALLBACK *Release)(LPOLEOBJECT);
222 OLESTATUS (CALLBACK *Show)(LPOLEOBJECT,BOOL16);
223 OLESTATUS (CALLBACK *DoVerb)(LPOLEOBJECT,UINT16,BOOL16,BOOL16);
224 OLESTATUS (CALLBACK *GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *);
225 OLESTATUS (CALLBACK *SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16);
226 OLESTATUS (CALLBACK *SetTargetDevice)(LPOLEOBJECT,HGLOBAL16);
227 OLESTATUS (CALLBACK *SetBounds)(LPOLEOBJECT,LPRECT16);
228 OLESTATUS (CALLBACK *EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT);
229 OLESTATUS (CALLBACK *SetColorScheme)(LPOLEOBJECT,LPLOGPALETTE);
230 OLESTATUS (CALLBACK *Delete)(LPOLEOBJECT);
231 OLESTATUS (CALLBACK *SetHostNames)(LPOLEOBJECT,LPCOLESTR16,LPCOLESTR16);
232 OLESTATUS (CALLBACK *SaveToStream)(LPOLEOBJECT,LPOLESTREAM);
233 OLESTATUS (CALLBACK *Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *);
234 OLESTATUS (CALLBACK *CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT *);
235 OLESTATUS (CALLBACK *Equal)(LPOLEOBJECT,LPOLEOBJECT);
236 OLESTATUS (CALLBACK *CopyToClipBoard)(LPOLEOBJECT);
237 OLESTATUS (CALLBACK *Draw)(LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16);
238 OLESTATUS (CALLBACK *Activate)(LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16);
239 OLESTATUS (CALLBACK *Execute)(LPOLEOBJECT,HGLOBAL16,UINT16);
240 OLESTATUS (CALLBACK *Close)(LPOLEOBJECT);
241 OLESTATUS (CALLBACK *Update)(LPOLEOBJECT);
242 OLESTATUS (CALLBACK *Reconnect)(LPOLEOBJECT);
243 OLESTATUS (CALLBACK *ObjectConvert)(LPOLEOBJECT,LPCOLESTR16,LPOLECLIENT,LHCLIENTDOC,LPCOLESTR16,LPOLEOBJECT*);
244 OLESTATUS (CALLBACK *GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE);
245 OLESTATUS (CALLBACK *SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE);
246 OLESTATUS (CALLBACK *Rename)(LPOLEOBJECT,LPCOLESTR16);
247 OLESTATUS (CALLBACK *QueryName)(LPOLEOBJECT,LPSTR,LPUINT16);
248 OLESTATUS (CALLBACK *QueryType)(LPOLEOBJECT,LPLONG);
249 OLESTATUS (CALLBACK *QueryBounds)(LPOLEOBJECT,LPRECT16);
250 OLESTATUS (CALLBACK *QuerySize)(LPOLEOBJECT,LPDWORD);
251 OLESTATUS (CALLBACK *QueryOpen)(LPOLEOBJECT);
252 OLESTATUS (CALLBACK *QueryOutOfDate)(LPOLEOBJECT);
253 OLESTATUS (CALLBACK *QueryReleaseStatus)(LPOLEOBJECT);
254 OLESTATUS (CALLBACK *QueryReleaseError)(LPOLEOBJECT);
255 OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod)(LPOLEOBJECT);
256 OLESTATUS (CALLBACK *RequestData)(LPOLEOBJECT,OLECLIPFORMAT);
257 OLESTATUS (CALLBACK *ObjectLong)(LPOLEOBJECT,UINT16,LPLONG);
258 } OLEOBJECTVTBL;
259 typedef OLEOBJECTVTBL* LPOLEOBJECTVTBL;
261 typedef struct _OLEOBJECT {
262 LPOLEOBJECTVTBL lpvtbl;
263 } OLEOBJECT;
266 OLESTATUS WINAPI OleRegisterServer16(LPCSTR,LPOLESERVER,LHSERVER *,HINSTANCE16,OLE_SERVER_USE);
267 OLESTATUS WINAPI OleUnblockServer16(LHSERVER,BOOL16 *);
268 OLESTATUS WINAPI OleRegisterServerDoc16(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC *);
269 OLESTATUS WINAPI OleRegisterClientDoc16(LPCSTR,LPCSTR,LONG,LHCLIENTDOC *);
270 OLESTATUS WINAPI OleRenameClientDoc16(LHCLIENTDOC,LPCSTR);
271 OLESTATUS WINAPI OleRevokeServerDoc16(LHSERVERDOC);
272 OLESTATUS WINAPI OleRevokeClientDoc16(LHCLIENTDOC);
273 OLESTATUS WINAPI OleRevokeServer16(LHSERVER);
275 /* com functions */
276 void WINAPI CoFreeUnusedLibraries(void);
277 HINSTANCE32 WINAPI CoLoadLibrary(LPSTR lpszLibName, BOOL32 bAutoFree);
278 void WINAPI CoFreeUnusedLibraries(void);
279 void WINAPI CoFreeAllLibraries(void);
281 #endif /* __WINE_OLE_H */