Mercurial > projects > dwt2
comparison org.eclipse.swt.win32.win32.x86/src/org/eclipse/swt/internal/ole/win32/OAIDL.d @ 0:6dd524f61e62
add dwt win and basic java stuff
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 02 Mar 2009 14:44:16 +0100 |
parents | |
children | 2e09b0e6857a |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:6dd524f61e62 |
---|---|
1 module org.eclipse.swt.internal.ole.win32.OAIDL; | |
2 | |
3 //+--------------------------------------------------------------------------- | |
4 // | |
5 // Microsoft Windows | |
6 // Copyright 1992 - 1998 Microsoft Corporation. | |
7 // | |
8 // File: oaidl.idl | |
9 // | |
10 //---------------------------------------------------------------------------- | |
11 | |
12 //private import std.c.windows.windows; | |
13 //private import std.c.windows.com; | |
14 private import org.eclipse.swt.internal.ole.win32.OBJIDL; | |
15 private import org.eclipse.swt.internal.ole.win32.extras; | |
16 private import org.eclipse.swt.internal.win32.WINTYPES; | |
17 private import org.eclipse.swt.ole.win32.Variant; | |
18 | |
19 extern(Windows) { | |
20 | |
21 struct DECIMAL | |
22 { | |
23 USHORT wReserved; | |
24 BYTE scale; | |
25 BYTE sign; | |
26 ULONG Hi32; | |
27 ulong Lo64; | |
28 } ; | |
29 | |
30 alias wchar * BSTR; | |
31 struct FLAGGED_WORD_BLOB | |
32 { | |
33 ULONG fFlags; | |
34 ULONG clSize; | |
35 ushort[1] asData; | |
36 } | |
37 | |
38 alias FLAGGED_WORD_BLOB *wireBSTR; | |
39 | |
40 struct BYTE_SIZEDARR | |
41 { | |
42 ULONG clSize; | |
43 byte *pData; | |
44 } ; | |
45 | |
46 struct WORD_SIZEDARR | |
47 { | |
48 ULONG clSize; | |
49 ushort *pData; | |
50 } ; | |
51 | |
52 struct DWORD_SIZEDARR | |
53 { | |
54 ULONG clSize; | |
55 ULONG * pData; | |
56 } ; | |
57 | |
58 struct HYPER_SIZEDARR | |
59 { | |
60 ULONG clSize; | |
61 long *pData; | |
62 } | |
63 | |
64 | |
65 enum | |
66 { VT_EMPTY = 0, | |
67 VT_NULL = 1, | |
68 VT_I2 = 2, | |
69 VT_I4 = 3, | |
70 VT_R4 = 4, | |
71 VT_R8 = 5, | |
72 VT_CY = 6, | |
73 VT_DATE = 7, | |
74 VT_BSTR = 8, | |
75 VT_DISPATCH = 9, | |
76 VT_ERROR = 10, | |
77 VT_BOOL = 11, | |
78 VT_VARIANT = 12, | |
79 VT_UNKNOWN = 13, | |
80 VT_DECIMAL = 14, | |
81 VT_I1 = 16, | |
82 VT_UI1 = 17, | |
83 VT_UI2 = 18, | |
84 VT_UI4 = 19, | |
85 VT_I8 = 20, | |
86 VT_UI8 = 21, | |
87 VT_INT = 22, | |
88 VT_UINT = 23, | |
89 VT_VOID = 24, | |
90 VT_HRESULT = 25, | |
91 VT_PTR = 26, | |
92 VT_SAFEARRAY = 27, | |
93 VT_CARRAY = 28, | |
94 VT_USERDEFINED = 29, | |
95 VT_LPSTR = 30, | |
96 VT_LPWSTR = 31, | |
97 VT_RECORD = 36, | |
98 VT_FILETIME = 64, | |
99 VT_BLOB = 65, | |
100 VT_STREAM = 66, | |
101 VT_STORAGE = 67, | |
102 VT_STREAMED_OBJECT = 68, | |
103 VT_STORED_OBJECT = 69, | |
104 VT_BLOB_OBJECT = 70, | |
105 VT_CF = 71, | |
106 VT_CLSID = 72, | |
107 VT_BSTR_BLOB = 0xfff, | |
108 VT_VECTOR = 0x1000, | |
109 VT_ARRAY = 0x2000, | |
110 VT_BYREF = 0x4000, | |
111 VT_RESERVED = 0x8000, | |
112 VT_ILLEGAL = 0xffff, | |
113 VT_ILLEGALMASKED = 0xfff, | |
114 VT_TYPEMASK = 0xfff | |
115 }; | |
116 | |
117 | |
118 /* | |
119 cpp_quote("//+-------------------------------------------------------------------------") | |
120 cpp_quote("//") | |
121 cpp_quote("// Microsoft Windows") | |
122 cpp_quote("// Copyright 1992 - 1998 Microsoft Corporation.") | |
123 cpp_quote("//") | |
124 cpp_quote("//--------------------------------------------------------------------------") | |
125 | |
126 cpp_quote("#if ( _MSC_VER >= 800 )") | |
127 */ | |
128 //cpp_quote("#pragma warning(disable:4201) /* Nameless struct/union */") | |
129 /* | |
130 cpp_quote("#endif") | |
131 | |
132 #ifndef DO_NO_IMPORTS | |
133 import "objidl.idl"; | |
134 #endif | |
135 | |
136 interface ICreateTypeInfo; | |
137 interface ICreateTypeInfo2; | |
138 interface ICreateTypeLib; | |
139 interface ICreateTypeLib2; | |
140 interface IDispatch; | |
141 interface IEnumVARIANT; | |
142 interface ITypeComp; | |
143 interface ITypeInfo; | |
144 interface ITypeInfo2; | |
145 interface ITypeLib; | |
146 interface ITypeLib2; | |
147 interface ITypeChangeEvents; | |
148 interface IErrorInfo; | |
149 interface ICreateErrorInfo; | |
150 interface ISupportErrorInfo; | |
151 interface ITypeFactory; | |
152 interface ITypeMarshal; | |
153 interface IRecordInfo; | |
154 | |
155 | |
156 [ | |
157 version(1.0), pointer_default(unique) | |
158 ] | |
159 | |
160 interface IOleAutomationTypes | |
161 { | |
162 | |
163 typedef CY CURRENCY; | |
164 | |
165 // ######################################################################### | |
166 // SAFEARRAY | |
167 // ######################################################################### | |
168 */ | |
169 struct SAFEARRAYBOUND { | |
170 ULONG cElements; | |
171 LONG lLbound; | |
172 } | |
173 alias SAFEARRAYBOUND * LPSAFEARRAYBOUND; | |
174 | |
175 struct _wireVARIANT { | |
176 } | |
177 struct _wireBRECORD { | |
178 } | |
179 // Forward references. | |
180 alias _wireVARIANT * wireVARIANT; | |
181 alias _wireBRECORD * wireBRECORD; | |
182 | |
183 struct SAFEARR_BSTR { | |
184 ULONG Size; | |
185 wireBSTR * aBstr; | |
186 } | |
187 struct SAFEARR_UNKNOWN { | |
188 ULONG Size; | |
189 IUnknown * apUnknown; | |
190 } | |
191 | |
192 struct SAFEARR_DISPATCH { | |
193 ULONG Size; | |
194 IDispatch * apDispatch; | |
195 } | |
196 | |
197 struct SAFEARR_VARIANT { | |
198 ULONG Size; | |
199 wireVARIANT * aVariant; | |
200 } | |
201 | |
202 struct SAFEARR_BRECORD { | |
203 ULONG Size; | |
204 wireBRECORD * aRecord; | |
205 } | |
206 | |
207 struct SAFEARR_HAVEIID { | |
208 ULONG Size; | |
209 IUnknown * apUnknown; | |
210 IID iid; | |
211 } | |
212 | |
213 enum SF_TYPE { | |
214 SF_ERROR = VT_ERROR, | |
215 SF_I1 = VT_I1, | |
216 SF_I2 = VT_I2, | |
217 SF_I4 = VT_I4, | |
218 SF_I8 = VT_I8, | |
219 SF_BSTR = VT_BSTR, | |
220 SF_UNKNOWN = VT_UNKNOWN, | |
221 SF_DISPATCH = VT_DISPATCH, | |
222 SF_VARIANT = VT_VARIANT, | |
223 SF_RECORD = VT_RECORD, | |
224 SF_HAVEIID = VT_UNKNOWN|VT_RESERVED, | |
225 } | |
226 | |
227 union uSAFEARRAY_UNION { | |
228 SAFEARR_BSTR BstrStr; | |
229 SAFEARR_UNKNOWN UnknownStr; | |
230 SAFEARR_DISPATCH DispatchStr; | |
231 SAFEARR_VARIANT VariantStr; | |
232 SAFEARR_BRECORD RecordStr; | |
233 SAFEARR_HAVEIID HaveIidStr; | |
234 BYTE_SIZEDARR ByteStr; | |
235 WORD_SIZEDARR WordStr; | |
236 DWORD_SIZEDARR LongStr; | |
237 HYPER_SIZEDARR HyperStr; | |
238 } | |
239 | |
240 struct SAFEARRAY_UNION { | |
241 ULONG sfType; | |
242 uSAFEARRAY_UNION u; | |
243 } | |
244 | |
245 alias SAFEARRAY_UNION SAFEARRAYUNION; | |
246 | |
247 struct wireSAFEARRAY { | |
248 USHORT cDims; | |
249 USHORT fFeatures; | |
250 ULONG cbElements; | |
251 ULONG cLocks; | |
252 SAFEARRAYUNION uArrayStructs; | |
253 SAFEARRAYBOUND[1] rgsabound; | |
254 } | |
255 alias wireSAFEARRAY SAFEARRAY ; | |
256 | |
257 alias wireSAFEARRAY * wirePSAFEARRAY; | |
258 | |
259 | |
260 struct tagSAFEARRAY { | |
261 USHORT cDims; | |
262 USHORT fFeatures; | |
263 ULONG cbElements; | |
264 ULONG cLocks; | |
265 PVOID pvData; | |
266 SAFEARRAYBOUND[1] rgsabound; | |
267 } | |
268 | |
269 alias SAFEARRAY * LPSAFEARRAY; | |
270 | |
271 const USHORT FADF_AUTO = 0x0001; /* array is allocated on the stack */ | |
272 const USHORT FADF_STATIC = 0x0002; /* array is staticly allocated */ | |
273 const USHORT FADF_EMBEDDED = 0x0004; /* array is embedded in a structure */ | |
274 const USHORT FADF_FIXEDSIZE = 0x0010; /* may not be resized or reallocated */ | |
275 const USHORT FADF_RECORD = 0x0020; /* an array of records */ | |
276 const USHORT FADF_HAVEIID = 0x0040; /* with FADF_DISPATCH, FADF_UNKNOWN */ | |
277 /* array has an IID for interfaces */ | |
278 const USHORT FADF_HAVEVARTYPE= 0x0080; /* array has a VT type */ | |
279 const USHORT FADF_BSTR = 0x0100; /* an array of BSTRs */ | |
280 const USHORT FADF_UNKNOWN = 0x0200; /* an array of IUnknown* */ | |
281 const USHORT FADF_DISPATCH = 0x0400; /* an array of IDispatch* */ | |
282 const USHORT FADF_VARIANT = 0x0800; /* an array of VARIANTs */ | |
283 const USHORT FADF_RESERVED = 0xF008; /* reserved bits */ | |
284 | |
285 | |
286 // ######################################################################### | |
287 // VARIANT | |
288 // ######################################################################### | |
289 /* | |
290 cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION)") | |
291 cpp_quote("#define __VARIANT_NAME_1 n1") | |
292 cpp_quote("#define __VARIANT_NAME_2 n2") | |
293 cpp_quote("#define __VARIANT_NAME_3 n3") | |
294 cpp_quote("#define __VARIANT_NAME_4 brecVal") | |
295 cpp_quote("#else") | |
296 cpp_quote("#define __tagVARIANT") | |
297 cpp_quote("#define __VARIANT_NAME_1") | |
298 cpp_quote("#define __VARIANT_NAME_2") | |
299 cpp_quote("#define __VARIANT_NAME_3") | |
300 cpp_quote("#define __tagBRECORD") | |
301 cpp_quote("#define __VARIANT_NAME_4") | |
302 cpp_quote("#endif") | |
303 */ | |
304 | |
305 /*struct brecVal_t { | |
306 PVOID pvRecord; | |
307 IRecordInfo * pRecInfo; | |
308 }*/ | |
309 struct brecVal_t { | |
310 PVOID pvRecord; | |
311 IUnknown * pRecInfo; | |
312 } | |
313 | |
314 alias double DOUBLE; | |
315 alias double DATE; | |
316 alias VARIANT_BOOL _VARIANT_BOOL; | |
317 alias long CY; | |
318 | |
319 | |
320 union n3_t { | |
321 LONG lVal; /* VT_I4 */ | |
322 BYTE bVal; /* VT_UI1 */ | |
323 SHORT iVal; /* VT_I2 */ | |
324 FLOAT fltVal; /* VT_R4 */ | |
325 DOUBLE dblVal; /* VT_R8 */ | |
326 VARIANT_BOOL boolVal; /* VT_BOOL */ | |
327 _VARIANT_BOOL BOOLval; /* (obsolete) */ | |
328 SCODE scode; /* VT_ERROR */ | |
329 CY cyVal; /* VT_CY */ | |
330 DATE date; /* VT_DATE */ | |
331 BSTR bstrVal; /* VT_BSTR */ | |
332 IUnknown punkVal; /* VT_UNKNOWN */ | |
333 IDispatch pdispVal; /* VT_DISPATCH */ | |
334 SAFEARRAY * parray; /* VT_ARRAY */ | |
335 BYTE * pbVal; /* VT_BYREF|VT_UI1 */ | |
336 SHORT * piVal; /* VT_BYREF|VT_I2 */ | |
337 LONG * plVal; /* VT_BYREF|VT_I4 */ | |
338 FLOAT * pfltVal; /* VT_BYREF|VT_R4 */ | |
339 DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */ | |
340 VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */ | |
341 _VARIANT_BOOL *pbool; /* (obsolete) */ | |
342 SCODE * pscode; /* VT_BYREF|VT_ERROR */ | |
343 CY * pcyVal; /* VT_BYREF|VT_CY */ | |
344 DATE * pdate; /* VT_BYREF|VT_DATE */ | |
345 BSTR * pbstrVal; /* VT_BYREF|VT_BSTR */ | |
346 IUnknown * ppunkVal; /* VT_BYREF|VT_UNKNOWN */ | |
347 IDispatch * ppdispVal; /* VT_BYREF|VT_DISPATCH */ | |
348 SAFEARRAY ** pparray; /* VT_BYREF|VT_ARRAY */ | |
349 VARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */ | |
350 PVOID byref; /* Generic ByRef */ | |
351 CHAR cVal; /* VT_I1 */ | |
352 USHORT uiVal; /* VT_UI2 */ | |
353 ULONG ulVal; /* VT_UI4 */ | |
354 INT intVal; /* VT_INT */ | |
355 UINT uintVal; /* VT_UINT */ | |
356 DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */ | |
357 CHAR * pcVal; /* VT_BYREF|VT_I1 */ | |
358 USHORT * puiVal; /* VT_BYREF|VT_UI2 */ | |
359 ULONG * pulVal; /* VT_BYREF|VT_UI4 */ | |
360 INT * pintVal; /* VT_BYREF|VT_INT */ | |
361 UINT * puintVal; /* VT_BYREF|VT_UINT */ | |
362 brecVal_t brecVal; /* VT_RECORD */ | |
363 } | |
364 | |
365 struct n2_t { | |
366 VARTYPE vt; | |
367 WORD wReserved1; | |
368 WORD wReserved2; | |
369 WORD wReserved3; | |
370 n3_t n3; | |
371 }; | |
372 union n1_t { | |
373 n2_t n2; | |
374 DECIMAL decVal; | |
375 }; | |
376 | |
377 // in tango.sys.win32.Types | |
378 /+ | |
379 struct VARIANT { | |
380 n1_t n1; | |
381 | |
382 VARTYPE vt() { return n1.n2.vt; }; | |
383 void vt(VARTYPE val) { n1.n2.vt = val; } | |
384 LONG lVal() { return n1.n2.n3.lVal; } | |
385 void lVal(LONG val) { return n1.n2.n3.lVal = val; } | |
386 FLOAT fltVal() { return n1.n2.n3.fltVal; } | |
387 void fltVal(FLOAT val) { return n1.n2.n3.fltVal = val; } | |
388 IDispatch pdispVal() { return n1.n2.n3.pdispVal; } | |
389 void pdispVal(IDispatch val) { n1.n2.n3.pdispVal = val; } | |
390 IUnknown punkVal() { return n1.n2.n3.punkVal; } | |
391 void punkVal(IUnknown val) { n1.n2.n3.punkVal = val; } | |
392 VARIANT_BOOL boolVal() { return n1.n2.n3.boolVal; } | |
393 void boolVal(VARIANT_BOOL val) { n1.n2.n3.boolVal = val; } | |
394 SHORT iVal() { return n1.n2.n3.iVal; } | |
395 void iVal(SHORT val) { n1.n2.n3.iVal = val; } | |
396 BSTR bstrVal() { return n1.n2.n3.bstrVal; } | |
397 void bstrVal(BSTR val) { n1.n2.n3.bstrVal = val; } | |
398 | |
399 }; | |
400 +/ | |
401 | |
402 | |
403 /* | |
404 struct VARIANT { | |
405 LONG[4] mmmm; | |
406 } | |
407 */ | |
408 alias VARIANT * LPVARIANT; | |
409 alias VARIANT VARIANTARG; | |
410 alias VARIANT * LPVARIANTARG; | |
411 | |
412 /+ | |
413 struct _wireBRECORD { | |
414 ULONG fFlags; | |
415 ULONG clSize; | |
416 IRecordInfo pRecInfo; | |
417 byte * pRecord; | |
418 }; | |
419 ++++++++++++++++++++/ | |
420 | |
421 | |
422 /+ | |
423 struct _wireVARIANT { | |
424 DWORD clSize; | |
425 DWORD rpcReserved; | |
426 USHORT vt; | |
427 USHORT wReserved1; | |
428 USHORT wReserved2; | |
429 USHORT wReserved3; | |
430 [switch_type(ULONG), switch_is(vt)] union { | |
431 [case(VT_I4)] LONG lVal; /* VT_I4 */ | |
432 [case(VT_UI1)] BYTE bVal; /* VT_UI1 */ | |
433 [case(VT_I2)] SHORT iVal; /* VT_I2 */ | |
434 [case(VT_R4)] FLOAT fltVal; /* VT_R4 */ | |
435 [case(VT_R8)] DOUBLE dblVal; /* VT_R8 */ | |
436 [case(VT_BOOL)] VARIANT_BOOL boolVal; /* VT_BOOL */ | |
437 [case(VT_ERROR)] SCODE scode; /* VT_ERROR */ | |
438 [case(VT_CY)] CY cyVal; /* VT_CY */ | |
439 [case(VT_DATE)] DATE date; /* VT_DATE */ | |
440 [case(VT_BSTR)] wireBSTR bstrVal; /* VT_BSTR */ | |
441 [case(VT_UNKNOWN)] IUnknown * punkVal; /* VT_UNKNOWN */ | |
442 [case(VT_DISPATCH)] IDispatch * pdispVal; /* VT_DISPATCH */ | |
443 [case(VT_ARRAY)] wireSAFEARRAY parray; /* VT_ARRAY */ | |
444 | |
445 [case(VT_RECORD, VT_RECORD|VT_BYREF)] | |
446 wireBRECORD brecVal; /* VT_RECORD */ | |
447 | |
448 [case(VT_UI1|VT_BYREF)] | |
449 BYTE * pbVal; /* VT_BYREF|VT_UI1 */ | |
450 [case(VT_I2|VT_BYREF)] | |
451 SHORT * piVal; /* VT_BYREF|VT_I2 */ | |
452 [case(VT_I4|VT_BYREF)] | |
453 LONG * plVal; /* VT_BYREF|VT_I4 */ | |
454 [case(VT_R4|VT_BYREF)] | |
455 FLOAT * pfltVal; /* VT_BYREF|VT_R4 */ | |
456 [case(VT_R8|VT_BYREF)] | |
457 DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */ | |
458 [case(VT_BOOL|VT_BYREF)] | |
459 VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */ | |
460 [case(VT_ERROR|VT_BYREF)] | |
461 SCODE * pscode; /* VT_BYREF|VT_ERROR */ | |
462 [case(VT_CY|VT_BYREF)] | |
463 CY * pcyVal; /* VT_BYREF|VT_CY */ | |
464 [case(VT_DATE|VT_BYREF)] | |
465 DATE * pdate; /* VT_BYREF|VT_DATE */ | |
466 [case(VT_BSTR|VT_BYREF)] | |
467 wireBSTR * pbstrVal; /* VT_BYREF|VT_BSTR */ | |
468 [case(VT_UNKNOWN|VT_BYREF)] | |
469 IUnknown ** ppunkVal; /* VT_BYREF|VT_UNKNOWN */ | |
470 [case(VT_DISPATCH|VT_BYREF)] | |
471 IDispatch ** ppdispVal; /* VT_BYREF|VT_DISPATCH */ | |
472 [case(VT_ARRAY|VT_BYREF)] | |
473 wireSAFEARRAY *pparray; /* VT_BYREF|VT_ARRAY */ | |
474 [case(VT_VARIANT|VT_BYREF)] | |
475 wireVARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */ | |
476 | |
477 [case(VT_I1)] CHAR cVal; /* VT_I1 */ | |
478 [case(VT_UI2)] USHORT uiVal; /* VT_UI2 */ | |
479 [case(VT_UI4)] ULONG ulVal; /* VT_UI4 */ | |
480 [case(VT_INT)] INT intVal; /* VT_INT */ | |
481 [case(VT_UINT)] UINT uintVal; /* VT_UINT */ | |
482 [case(VT_DECIMAL)] DECIMAL decVal; /* VT_DECIMAL */ | |
483 | |
484 [case(VT_BYREF|VT_DECIMAL)] | |
485 DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */ | |
486 [case(VT_BYREF|VT_I1)] | |
487 CHAR * pcVal; /* VT_BYREF|VT_I1 */ | |
488 [case(VT_BYREF|VT_UI2)] | |
489 USHORT * puiVal; /* VT_BYREF|VT_UI2 */ | |
490 [case(VT_BYREF|VT_UI4)] | |
491 ULONG * pulVal; /* VT_BYREF|VT_UI4 */ | |
492 [case(VT_BYREF|VT_INT)] | |
493 INT * pintVal; /* VT_BYREF|VT_INT */ | |
494 [case(VT_BYREF|VT_UINT)] | |
495 UINT * puintVal; /* VT_BYREF|VT_UINT */ | |
496 [case(VT_EMPTY)] ; /* nothing */ | |
497 [case(VT_NULL)] ; /* nothing */ | |
498 }; | |
499 }; | |
500 +/ | |
501 | |
502 //######################################################################## | |
503 // End of VARIANT & SAFEARRAY | |
504 //######################################################################## | |
505 | |
506 | |
507 //TypeInfo stuff. | |
508 | |
509 alias LONG DISPID; | |
510 alias DISPID MEMBERID; | |
511 alias DWORD HREFTYPE; | |
512 | |
513 enum TYPEKIND { | |
514 TKIND_ENUM = 0, | |
515 TKIND_RECORD, | |
516 TKIND_MODULE, | |
517 TKIND_INTERFACE, | |
518 TKIND_DISPATCH, | |
519 TKIND_COCLASS, | |
520 TKIND_ALIAS, | |
521 TKIND_UNION, | |
522 TKIND_MAX /* end of enum marker */ | |
523 } | |
524 union TD_00{ | |
525 TYPEDESC * lptdesc; | |
526 ARRAYDESC * lpadesc; | |
527 HREFTYPE hreftype; | |
528 }; | |
529 | |
530 struct TYPEDESC { | |
531 TD_00 u; | |
532 VARTYPE vt; | |
533 } | |
534 | |
535 struct ARRAYDESC { | |
536 TYPEDESC tdescElem; /* element type */ | |
537 USHORT cDims; /* dimension count */ | |
538 SAFEARRAYBOUND[1] rgbounds; /* var len array of bounds */ | |
539 } | |
540 | |
541 // parameter description | |
542 struct PARAMDESCEX { | |
543 ULONG cBytes; /* size of this structure */ | |
544 VARIANTARG varDefaultValue; /* default value of this parameter */ | |
545 } | |
546 alias PARAMDESCEX * LPPARAMDESCEX; | |
547 | |
548 struct PARAMDESC { | |
549 LPPARAMDESCEX pparamdescex; /* valid if PARAMFLAG_FHASDEFAULT bit is set */ | |
550 USHORT wParamFlags; /* IN, OUT, etc */ | |
551 } | |
552 alias PARAMDESC * LPPARAMDESC; | |
553 | |
554 const USHORT PARAMFLAG_NONE = 0x00; | |
555 const USHORT PARAMFLAG_FIN = 0x01; | |
556 const USHORT PARAMFLAG_FOUT = 0x02; | |
557 const USHORT PARAMFLAG_FLCID = 0x04; | |
558 const USHORT PARAMFLAG_FRETVAL = 0x08; | |
559 const USHORT PARAMFLAG_FOPT = 0x10; | |
560 const USHORT PARAMFLAG_FHASDEFAULT = 0x20; | |
561 const USHORT PARAMFLAG_FHASCUSTDATA = 0x40; | |
562 | |
563 struct IDLDESC { | |
564 ULONG dwReserved; | |
565 USHORT wIDLFlags; /* IN, OUT, etc */ | |
566 } | |
567 alias IDLDESC * LPIDLDESC; | |
568 | |
569 const USHORT IDLFLAG_NONE = PARAMFLAG_NONE; | |
570 const USHORT IDLFLAG_FIN = PARAMFLAG_FIN; | |
571 const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT; | |
572 const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID; | |
573 const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL; | |
574 | |
575 | |
576 struct ELEMDESC { /* a format that MIDL likes */ | |
577 TYPEDESC tdesc; /* the type of the element */ | |
578 PARAMDESC paramdesc; /* IDLDESC is a subset of PARAMDESC */ | |
579 } | |
580 | |
581 struct TYPEATTR { | |
582 GUID guid; /* the GUID of the TypeInfo */ | |
583 LCID lcid; /* locale of member names and doc strings */ | |
584 DWORD dwReserved; | |
585 MEMBERID memidConstructor; /* ID of constructor, MEMBERID_NIL if none */ | |
586 MEMBERID memidDestructor; /* ID of destructor, MEMBERID_NIL if none */ | |
587 LPOLESTR lpstrSchema; | |
588 ULONG cbSizeInstance; /* the size of an instance of this type */ | |
589 TYPEKIND typekind; /* the kind of type this typeinfo describes */ | |
590 WORD cFuncs; /* number of functions */ | |
591 WORD cVars; /* number of variables / data members */ | |
592 WORD cImplTypes; /* number of implemented interfaces */ | |
593 WORD cbSizeVft; /* the size of this types virtual func table */ | |
594 WORD cbAlignment; /* specifies the alignment requirements for | |
595 an instance of this type, | |
596 0 = align on 64k boundary | |
597 1 = byte align | |
598 2 = word align | |
599 4 = dword align... */ | |
600 WORD wTypeFlags; | |
601 WORD wMajorVerNum; /* major version number */ | |
602 WORD wMinorVerNum; /* minor version number */ | |
603 TYPEDESC tdescAlias; /* if typekind == TKIND_ALIAS this field | |
604 specifies the type for which this type | |
605 is an alias */ | |
606 IDLDESC idldescType; /* IDL attributes of the described type */ | |
607 } | |
608 alias TYPEATTR * LPTYPEATTR; | |
609 | |
610 | |
611 struct DISPPARAMS { | |
612 VARIANTARG * rgvarg; | |
613 DISPID * rgdispidNamedArgs; | |
614 UINT cArgs; | |
615 UINT cNamedArgs; | |
616 } | |
617 | |
618 struct EXCEPINFO { | |
619 WORD wCode; /* An error code describing the error. */ | |
620 WORD wReserved; | |
621 BSTR bstrSource; /* A source of the exception */ | |
622 BSTR bstrDescription; /* A description of the error */ | |
623 BSTR bstrHelpFile; /* Fully qualified drive, path, and file name */ | |
624 DWORD dwHelpContext; /* help context of topic within the help file */ | |
625 ULONG pvReserved; | |
626 ULONG pfnDeferredFillIn; | |
627 SCODE scode; | |
628 } | |
629 /+ | |
630 | |
631 cpp_quote("#else /* 0 */") | |
632 cpp_quote("typedef struct tagEXCEPINFO {") | |
633 cpp_quote(" WORD wCode;") | |
634 cpp_quote(" WORD wReserved;") | |
635 cpp_quote(" BSTR bstrSource;") | |
636 cpp_quote(" BSTR bstrDescription;") | |
637 cpp_quote(" BSTR bstrHelpFile;") | |
638 cpp_quote(" DWORD dwHelpContext;") | |
639 cpp_quote(" PVOID pvReserved;") | |
640 cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);") | |
641 cpp_quote(" SCODE scode;") | |
642 cpp_quote("} EXCEPINFO, * LPEXCEPINFO;") | |
643 cpp_quote("#endif /* 0 */") | |
644 +/ | |
645 | |
646 enum CALLCONV { | |
647 CC_FASTCALL = 0, | |
648 CC_CDECL = 1, | |
649 CC_MSCPASCAL, | |
650 CC_PASCAL = CC_MSCPASCAL, | |
651 CC_MACPASCAL, | |
652 CC_STDCALL, | |
653 CC_FPFASTCALL, | |
654 CC_SYSCALL, | |
655 CC_MPWCDECL, | |
656 CC_MPWPASCAL, | |
657 CC_MAX /* end of enum marker */ | |
658 } | |
659 enum FUNCKIND { | |
660 FUNC_VIRTUAL, | |
661 FUNC_PUREVIRTUAL, | |
662 FUNC_NONVIRTUAL, | |
663 FUNC_STATIC, | |
664 FUNC_DISPATCH | |
665 } | |
666 | |
667 enum INVOKEKIND { | |
668 INVOKE_FUNC = 1, | |
669 INVOKE_PROPERTYGET = 2, | |
670 INVOKE_PROPERTYPUT = 4, | |
671 INVOKE_PROPERTYPUTREF = 8 | |
672 } | |
673 | |
674 struct FUNCDESC { | |
675 MEMBERID memid; | |
676 SCODE * lprgscode; | |
677 ELEMDESC * lprgelemdescParam; /* array of param types */ | |
678 FUNCKIND funckind; | |
679 INVOKEKIND invkind; | |
680 CALLCONV callconv; | |
681 SHORT cParams; | |
682 SHORT cParamsOpt; | |
683 SHORT oVft; | |
684 SHORT cScodes; | |
685 ELEMDESC elemdescFunc; | |
686 WORD wFuncFlags; | |
687 } | |
688 alias FUNCDESC * LPFUNCDESC; | |
689 | |
690 enum VARKIND { | |
691 VAR_PERINSTANCE, | |
692 VAR_STATIC, | |
693 VAR_CONST, | |
694 VAR_DISPATCH | |
695 } | |
696 /* IMPLTYPE Flags */ | |
697 const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1; | |
698 const USHORT IMPLTYPEFLAG_FSOURCE = 0x2; | |
699 const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4; | |
700 const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE= 0x8; | |
701 | |
702 union VD_u { | |
703 /* offset of variable within the instance */ | |
704 ULONG oInst; | |
705 VARIANT * lpvarValue; /* the value of the constant */ | |
706 } | |
707 struct VARDESC { | |
708 MEMBERID memid; | |
709 LPOLESTR lpstrSchema; | |
710 VD_u u; | |
711 ELEMDESC elemdescVar; | |
712 WORD wVarFlags; | |
713 VARKIND varkind; | |
714 } | |
715 alias VARDESC * LPVARDESC; | |
716 | |
717 enum TYPEFLAGS { | |
718 TYPEFLAG_FAPPOBJECT = 0x01, | |
719 TYPEFLAG_FCANCREATE = 0x02, | |
720 TYPEFLAG_FLICENSED = 0x04, | |
721 TYPEFLAG_FPREDECLID = 0x08, | |
722 TYPEFLAG_FHIDDEN = 0x10, | |
723 TYPEFLAG_FCONTROL = 0x20, | |
724 TYPEFLAG_FDUAL = 0x40, | |
725 TYPEFLAG_FNONEXTENSIBLE = 0x80, | |
726 TYPEFLAG_FOLEAUTOMATION = 0x100, | |
727 TYPEFLAG_FRESTRICTED = 0x200, | |
728 TYPEFLAG_FAGGREGATABLE = 0x400, | |
729 TYPEFLAG_FREPLACEABLE = 0x800, | |
730 TYPEFLAG_FDISPATCHABLE = 0x1000, | |
731 TYPEFLAG_FREVERSEBIND = 0x2000 | |
732 } | |
733 | |
734 enum FUNCFLAGS { | |
735 FUNCFLAG_FRESTRICTED = 0x1, | |
736 FUNCFLAG_FSOURCE = 0x2, | |
737 FUNCFLAG_FBINDABLE = 0x4, | |
738 FUNCFLAG_FREQUESTEDIT = 0x8, | |
739 FUNCFLAG_FDISPLAYBIND = 0x10, | |
740 FUNCFLAG_FDEFAULTBIND = 0x20, | |
741 FUNCFLAG_FHIDDEN = 0x40, | |
742 FUNCFLAG_FUSESGETLASTERROR = 0x80, | |
743 FUNCFLAG_FDEFAULTCOLLELEM = 0x100, | |
744 FUNCFLAG_FUIDEFAULT = 0x200, | |
745 FUNCFLAG_FNONBROWSABLE = 0x400, | |
746 FUNCFLAG_FREPLACEABLE = 0x800, | |
747 FUNCFLAG_FIMMEDIATEBIND = 0x1000 | |
748 } | |
749 | |
750 enum VARFLAGS { | |
751 VARFLAG_FREADONLY = 0x1, | |
752 VARFLAG_FSOURCE = 0x2, | |
753 VARFLAG_FBINDABLE = 0x4, | |
754 VARFLAG_FREQUESTEDIT = 0x8, | |
755 VARFLAG_FDISPLAYBIND = 0x10, | |
756 VARFLAG_FDEFAULTBIND = 0x20, | |
757 VARFLAG_FHIDDEN = 0x40, | |
758 VARFLAG_FRESTRICTED = 0x80, | |
759 VARFLAG_FDEFAULTCOLLELEM = 0x100, | |
760 VARFLAG_FUIDEFAULT = 0x200, | |
761 VARFLAG_FNONBROWSABLE = 0x400, | |
762 VARFLAG_FREPLACEABLE = 0x800, | |
763 VARFLAG_FIMMEDIATEBIND = 0x1000 | |
764 } | |
765 | |
766 struct CLEANLOCALSTORAGE { | |
767 IUnknown pInterface; /* interface that is responsible for storage */ | |
768 PVOID pStorage; /* the storage being managed by interface */ | |
769 DWORD flags; /* which interface, what storage */ | |
770 } | |
771 | |
772 struct CUSTDATAITEM { | |
773 GUID guid; /* guid identifying this custom data item */ | |
774 VARIANTARG varValue; /* value of this custom data item */ | |
775 } | |
776 alias CUSTDATAITEM * LPCUSTDATAITEM; | |
777 | |
778 struct CUSTDATA { | |
779 DWORD cCustData; /* number of custom data items in rgCustData */ | |
780 LPCUSTDATAITEM prgCustData; | |
781 /* array of custom data items */ | |
782 } | |
783 alias CUSTDATA * LPCUSTDATA; | |
784 | |
785 | |
786 interface ICreateTypeInfo: IUnknown | |
787 { | |
788 HRESULT SetGuid( REFGUID guid ); | |
789 HRESULT SetTypeFlags( UINT uTypeFlags ); | |
790 HRESULT SetDocString( LPOLESTR pStrDoc ); | |
791 HRESULT SetHelpContext( DWORD dwHelpContext); | |
792 HRESULT SetVersion( WORD wMajorVerNum, WORD wMinorVerNum ); | |
793 HRESULT AddRefTypeInfo( ITypeInfo pTInfo, HREFTYPE * phRefType ); | |
794 HRESULT AddFuncDesc( UINT index, FUNCDESC * pFuncDesc ); | |
795 HRESULT AddImplType( UINT index, HREFTYPE hRefType ); | |
796 HRESULT SetImplTypeFlags( UINT index, INT implTypeFlags ); | |
797 HRESULT SetAlignment( WORD cbAlignment ); | |
798 HRESULT SetSchema( LPOLESTR pStrSchema ); | |
799 HRESULT AddVarDesc( UINT index, VARDESC * pVarDesc ); | |
800 HRESULT SetFuncAndParamNames( UINT index, LPOLESTR * rgszNames, UINT cNames ); | |
801 HRESULT SetVarName( UINT index, LPOLESTR szName ); | |
802 HRESULT SetTypeDescAlias( TYPEDESC * pTDescAlias ); | |
803 HRESULT DefineFuncAsDllEntry( UINT index,LPOLESTR szDllName,LPOLESTR szProcName ); | |
804 HRESULT SetFuncDocString( UINT index, LPOLESTR szDocString ); | |
805 HRESULT SetVarDocString(UINT index,LPOLESTR szDocString ); | |
806 HRESULT SetFuncHelpContext(UINT index,DWORD dwHelpContext ); | |
807 HRESULT SetVarHelpContext(UINT index,DWORD dwHelpContext ); | |
808 HRESULT SetMops(UINT index,BSTR bstrMops ); | |
809 HRESULT SetTypeIdldesc(IDLDESC * pIdlDesc ); | |
810 HRESULT LayOut(); | |
811 } | |
812 alias ICreateTypeInfo LPCREATETYPEINFO; | |
813 | |
814 interface ICreateTypeInfo2: ICreateTypeInfo | |
815 { | |
816 HRESULT DeleteFuncDesc(UINT index); | |
817 HRESULT DeleteFuncDescByMemId(MEMBERID memid,INVOKEKIND invKind); | |
818 HRESULT DeleteVarDesc(UINT index); | |
819 HRESULT DeleteVarDescByMemId(MEMBERID memid); | |
820 HRESULT DeleteImplType(UINT index); | |
821 HRESULT SetCustData(REFGUID guid,VARIANT * pVarVal); | |
822 HRESULT SetFuncCustData(UINT index,REFGUID guid,VARIANT * pVarVal); | |
823 HRESULT SetParamCustData(UINT indexFunc,UINT indexParam,REFGUID guid,VARIANT * pVarVal); | |
824 HRESULT SetVarCustData(UINT index,REFGUID guid,VARIANT * pVarVal); | |
825 HRESULT SetImplTypeCustData(UINT index,REFGUID guid,VARIANT * pVarVal); | |
826 HRESULT SetHelpStringContext(ULONG dwHelpStringContext); | |
827 HRESULT SetFuncHelpStringContext(UINT index,ULONG dwHelpStringContext); | |
828 HRESULT SetVarHelpStringContext(UINT index,ULONG dwHelpStringContext); | |
829 HRESULT Invalidate(); | |
830 HRESULT SetName(LPOLESTR szName); | |
831 } | |
832 alias ICreateTypeInfo2 LPCREATETYPEINFO2; | |
833 | |
834 interface ICreateTypeLib : IUnknown | |
835 { | |
836 HRESULT CreateTypeInfo(LPOLESTR szName,TYPEKIND tkind,ICreateTypeInfo * ppCTInfo); | |
837 HRESULT SetName(LPOLESTR szName); | |
838 HRESULT SetVersion(WORD wMajorVerNum,WORD wMinorVerNum); | |
839 HRESULT SetGuid(REFGUID guid); | |
840 HRESULT SetDocString( LPOLESTR szDoc); | |
841 HRESULT SetHelpFileName(LPOLESTR szHelpFileName); | |
842 HRESULT SetHelpContext(DWORD dwHelpContext); | |
843 HRESULT SetLcid(LCID lcid); | |
844 HRESULT SetLibFlags(UINT uLibFlags); | |
845 HRESULT SaveAllChanges(); | |
846 } | |
847 alias ICreateTypeLib LPCREATETYPELIB; | |
848 | |
849 interface ICreateTypeLib2 : ICreateTypeLib | |
850 { | |
851 HRESULT DeleteTypeInfo(LPOLESTR szName); | |
852 HRESULT SetCustData(REFGUID guid,VARIANT * pVarVal); | |
853 HRESULT SetHelpStringContext(ULONG dwHelpStringContext); | |
854 HRESULT SetHelpStringDll(LPOLESTR szFileName); | |
855 } | |
856 | |
857 interface IDispatch : IUnknown | |
858 { | |
859 HRESULT GetTypeInfoCount(UINT * pctinfo); | |
860 HRESULT GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo * ppTInfo); | |
861 HRESULT GetIDsOfNames(REFIID riid, LPOLESTR * rgszNames, UINT cNames, LCID lcid, DISPID * rgDispId); | |
862 HRESULT Invoke(DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS* pDispParams,VARIANT* pVarResult,EXCEPINFO* pExcepInfo,UINT* puArgErr); | |
863 } | |
864 alias IDispatch LPDISPATCH; | |
865 const DISPID DISPID_UNKNOWN = cast(DISPID)-1; | |
866 const DISPID DISPID_VALUE = cast(DISPID)0; | |
867 const DISPID DISPID_PROPERTYPUT = cast(DISPID)-3; | |
868 const DISPID DISPID_NEWENUM = cast(DISPID)-4; | |
869 const DISPID DISPID_EVALUATE = cast(DISPID)-5; | |
870 const DISPID DISPID_CONSTRUCTOR = cast(DISPID)-6; | |
871 const DISPID DISPID_DESTRUCTOR = cast(DISPID)-7; | |
872 const DISPID DISPID_COLLECT = cast(DISPID)-8; | |
873 | |
874 /+++++++++++++++++++++++++++++++++++++++ | |
875 | |
876 [ | |
877 object, | |
878 uuid(00020404-0000-0000-C000-000000000046), | |
879 pointer_default(unique) | |
880 ] | |
881 | |
882 interface IEnumVARIANT : IUnknown | |
883 { | |
884 typedef [unique] IEnumVARIANT* LPENUMVARIANT; | |
885 | |
886 [local] | |
887 HRESULT Next( | |
888 [in] ULONG celt, | |
889 [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar, | |
890 [out] ULONG * pCeltFetched | |
891 ); | |
892 | |
893 [call_as(Next)] | |
894 HRESULT RemoteNext( | |
895 [in] ULONG celt, | |
896 [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar, | |
897 [out] ULONG * pCeltFetched | |
898 ); | |
899 | |
900 HRESULT Skip( | |
901 [in] ULONG celt | |
902 ); | |
903 | |
904 HRESULT Reset( | |
905 ); | |
906 | |
907 HRESULT Clone( | |
908 [out] IEnumVARIANT ** ppEnum | |
909 ); | |
910 } | |
911 | |
912 | |
913 +/ | |
914 enum DESCKIND { | |
915 DESCKIND_NONE = 0, | |
916 DESCKIND_FUNCDESC, | |
917 DESCKIND_VARDESC, | |
918 DESCKIND_TYPECOMP, | |
919 DESCKIND_IMPLICITAPPOBJ, | |
920 DESCKIND_MAX | |
921 } | |
922 | |
923 | |
924 union BINDPTR { | |
925 FUNCDESC * lpfuncdesc; | |
926 VARDESC * lpvardesc; | |
927 ITypeComp lptcomp; | |
928 } | |
929 alias BINDPTR * LPBINDPTR; | |
930 | |
931 interface ITypeComp : IUnknown | |
932 { | |
933 | |
934 HRESULT Bind(LPOLESTR szName,ULONG lHashVal,WORD wFlags, | |
935 ITypeInfo * ppTInfo,DESCKIND * pDescKind,BINDPTR * pBindPtr | |
936 ); | |
937 | |
938 | |
939 HRESULT BindType( LPOLESTR szName,ULONG lHashVal, | |
940 ITypeInfo * ppTInfo, | |
941 ITypeComp * ppTComp | |
942 ); | |
943 | |
944 } | |
945 | |
946 interface ITypeInfo : IUnknown | |
947 { | |
948 HRESULT GetTypeAttr(TYPEATTR ** ppTypeAttr); | |
949 HRESULT GetTypeComp( ITypeComp * ppTComp ); | |
950 HRESULT GetFuncDesc( UINT index, FUNCDESC ** ppFuncDesc ); | |
951 HRESULT GetVarDesc( UINT index,VARDESC ** ppVarDesc); | |
952 HRESULT GetNames(MEMBERID memid,BSTR * rgBstrNames,UINT cMaxNames,UINT * pcNames); | |
953 HRESULT GetRefTypeOfImplType(UINT index,HREFTYPE * pRefType); | |
954 HRESULT GetImplTypeFlags(UINT index,INT * pImplTypeFlags); | |
955 HRESULT GetIDsOfNames(LPOLESTR * rgszNames,UINT cNames,MEMBERID * pMemId); | |
956 HRESULT Invoke(PVOID pvInstance,MEMBERID memid,WORD wFlags,DISPPARAMS * pDispParams,VARIANT * pVarResult,EXCEPINFO * pExcepInfo,UINT * puArgErr); | |
957 HRESULT GetDocumentation(MEMBERID memid,BSTR * pBstrName,BSTR * pBstrDocString,DWORD * pdwHelpContext,BSTR * pBstrHelpFile); | |
958 HRESULT GetDllEntry(MEMBERID memid,INVOKEKIND invKind,BSTR * pBstrDllName,BSTR * pBstrName,WORD * pwOrdinal); | |
959 HRESULT GetRefTypeInfo(HREFTYPE hRefType,ITypeInfo * ppTInfo); | |
960 HRESULT AddressOfMember(MEMBERID memid,INVOKEKIND invKind,PVOID * ppv); | |
961 HRESULT CreateInstance(IUnknown pUnkOuter,REFIID riid,PVOID * ppvObj); | |
962 HRESULT GetMops(MEMBERID memid,BSTR * pBstrMops); | |
963 HRESULT GetContainingTypeLib( ITypeLib ** ppTLib,UINT * pIndex); | |
964 void ReleaseTypeAttr(TYPEATTR * pTypeAttr ); | |
965 void ReleaseFuncDesc( FUNCDESC * pFuncDesc ); | |
966 void ReleaseVarDesc(VARDESC * pVarDesc ); | |
967 } | |
968 alias ITypeInfo LPTYPEINFO; | |
969 | |
970 interface ITypeInfo2 : ITypeInfo | |
971 { | |
972 HRESULT GetTypeKind(TYPEKIND * pTypeKind); | |
973 HRESULT GetTypeFlags(ULONG * pTypeFlags); | |
974 HRESULT GetFuncIndexOfMemId(MEMBERID memid,INVOKEKIND invKind,UINT * pFuncIndex); | |
975 HRESULT GetVarIndexOfMemId(MEMBERID memid,UINT * pVarIndex); | |
976 HRESULT GetCustData(REFGUID guid,VARIANT * pVarVal); | |
977 HRESULT GetFuncCustData(UINT index,REFGUID guid,VARIANT * pVarVal); | |
978 HRESULT GetParamCustData(UINT indexFunc,UINT indexParam,REFGUID guid,VARIANT * pVarVal); | |
979 HRESULT GetVarCustData(UINT index,REFGUID guid,VARIANT * pVarVal); | |
980 HRESULT GetImplTypeCustData(UINT index,REFGUID guid,VARIANT * pVarVal); | |
981 HRESULT GetDocumentation2(MEMBERID memid,LCID lcid,BSTR *pbstrHelpString,DWORD *pdwHelpStringContext,BSTR *pbstrHelpStringDll); | |
982 HRESULT GetAllCustData(CUSTDATA * pCustData); | |
983 HRESULT GetAllFuncCustData(UINT index,CUSTDATA * pCustData); | |
984 HRESULT GetAllParamCustData(UINT indexFunc,UINT indexParam,CUSTDATA * pCustData); | |
985 HRESULT GetAllVarCustData(UINT index,CUSTDATA * pCustData); | |
986 HRESULT GetAllImplTypeCustData(UINT index,CUSTDATA * pCustData); | |
987 } | |
988 | |
989 alias ITypeInfo2 LPTYPEINFO2; | |
990 | |
991 enum SYSKIND { | |
992 SYS_WIN16 = 0, | |
993 SYS_WIN32, | |
994 SYS_MAC | |
995 } | |
996 | |
997 enum LIBFLAGS { | |
998 LIBFLAG_FRESTRICTED = 0x01, | |
999 LIBFLAG_FCONTROL = 0x02, | |
1000 LIBFLAG_FHIDDEN = 0x04, | |
1001 LIBFLAG_FHASDISKIMAGE = 0x08 | |
1002 } | |
1003 | |
1004 struct TLIBATTR { | |
1005 GUID guid; | |
1006 LCID lcid; | |
1007 SYSKIND syskind; | |
1008 WORD wMajorVerNum; | |
1009 WORD wMinorVerNum; | |
1010 WORD wLibFlags; | |
1011 } | |
1012 alias TLIBATTR * LPTLIBATTR; | |
1013 | |
1014 interface ITypeLib : IUnknown | |
1015 { | |
1016 UINT GetTypeInfoCount( | |
1017 ); | |
1018 | |
1019 HRESULT GetTypeInfo( | |
1020 UINT index, | |
1021 ITypeInfo * ppTInfo | |
1022 ); | |
1023 | |
1024 HRESULT GetTypeInfoType( | |
1025 UINT index, | |
1026 TYPEKIND * pTKind | |
1027 ); | |
1028 | |
1029 HRESULT GetTypeInfoOfGuid( | |
1030 REFGUID guid, | |
1031 ITypeInfo * ppTinfo | |
1032 ); | |
1033 | |
1034 HRESULT GetLibAttr( | |
1035 TLIBATTR ** ppTLibAttr | |
1036 ); | |
1037 | |
1038 HRESULT GetTypeComp(ITypeComp * ppTComp ); | |
1039 | |
1040 HRESULT GetDocumentation(INT index,BSTR * pBstrName,BSTR * pBstrDocString,DWORD * pdwHelpContext,BSTR * pBstrHelpFile | |
1041 ); | |
1042 | |
1043 HRESULT IsName(LPOLESTR szNameBuf,ULONG lHashVal,BOOL * pfName | |
1044 ); | |
1045 | |
1046 HRESULT FindName( | |
1047 LPOLESTR szNameBuf, | |
1048 ULONG lHashVal, | |
1049 ITypeInfo * ppTInfo, | |
1050 MEMBERID * rgMemId, | |
1051 USHORT * pcFound | |
1052 ); | |
1053 | |
1054 void ReleaseTLibAttr( TLIBATTR * pTLibAttr ); | |
1055 } | |
1056 | |
1057 alias ITypeLib LPTYPELIB; | |
1058 | |
1059 interface ITypeLib2 : ITypeLib | |
1060 { | |
1061 HRESULT GetCustData(REFGUID guid,VARIANT * pVarVal); | |
1062 HRESULT GetLibStatistics(ULONG * pcUniqueNames,ULONG * pcchUniqueNames); | |
1063 HRESULT GetDocumentation2(INT index,LCID lcid,BSTR *pbstrHelpString,DWORD *pdwHelpStringContext,BSTR *pbstrHelpStringDll); | |
1064 HRESULT GetAllCustData(CUSTDATA * pCustData); | |
1065 } | |
1066 alias ITypeLib2 LPTYPELIB2; | |
1067 | |
1068 enum CHANGEKIND { | |
1069 CHANGEKIND_ADDMEMBER, | |
1070 CHANGEKIND_DELETEMEMBER, | |
1071 CHANGEKIND_SETNAMES, | |
1072 CHANGEKIND_SETDOCUMENTATION, | |
1073 CHANGEKIND_GENERAL, | |
1074 CHANGEKIND_INVALIDATE, | |
1075 CHANGEKIND_CHANGEFAILED, | |
1076 CHANGEKIND_MAX, | |
1077 ADDMEMBER = CHANGEKIND_ADDMEMBER, | |
1078 DELETEMEMBER = CHANGEKIND_DELETEMEMBER, | |
1079 SETNAMES = CHANGEKIND_SETNAMES, | |
1080 SETDOCUMENTATION = CHANGEKIND_SETDOCUMENTATION, | |
1081 GENERAL = CHANGEKIND_GENERAL, | |
1082 INVALIDATE = CHANGEKIND_INVALIDATE, | |
1083 CHANGEFAILED = CHANGEKIND_CHANGEFAILED, | |
1084 MAX = CHANGEKIND_MAX | |
1085 } | |
1086 | |
1087 interface ITypeChangeEvents: IUnknown | |
1088 { | |
1089 // notification messages used by the dynamic typeinfo protocol. | |
1090 HRESULT RequestTypeChange(CHANGEKIND changeKind,ITypeInfo pTInfoBefore,LPOLESTR pStrName,INT * pfCancel); | |
1091 HRESULT AfterTypeChange(CHANGEKIND changeKind,ITypeInfo pTInfoAfter,LPOLESTR pStrName); | |
1092 } | |
1093 alias ITypeChangeEvents LPTYPECHANGEEVENTS; | |
1094 | |
1095 interface IErrorInfo: IUnknown | |
1096 { | |
1097 HRESULT GetGUID( GUID * pGUID ); | |
1098 HRESULT GetSource(BSTR * pBstrSource); | |
1099 HRESULT GetDescription(BSTR * pBstrDescription); | |
1100 HRESULT GetHelpFile(BSTR * pBstrHelpFile); | |
1101 HRESULT GetHelpContext(DWORD * pdwHelpContext); | |
1102 } | |
1103 alias IErrorInfo LPERRORINFO; | |
1104 | |
1105 interface ICreateErrorInfo: IUnknown | |
1106 { | |
1107 HRESULT SetGUID(REFGUID rguid); | |
1108 HRESULT SetSource(LPOLESTR szSource); | |
1109 HRESULT SetDescription(LPOLESTR szDescription); | |
1110 HRESULT SetHelpFile(LPOLESTR szHelpFile); | |
1111 HRESULT SetHelpContext(DWORD dwHelpContext); | |
1112 } | |
1113 alias ICreateErrorInfo LPCREATEERRORINFO; | |
1114 | |
1115 interface ISupportErrorInfo: IUnknown | |
1116 { | |
1117 HRESULT InterfaceSupportsErrorInfo(REFIID riid); | |
1118 } | |
1119 alias ISupportErrorInfo LPSUPPORTERRORINFO; | |
1120 | |
1121 interface ITypeFactory : IUnknown | |
1122 { | |
1123 HRESULT CreateFromTypeInfo(ITypeInfo pTypeInfo,REFIID riid, IUnknown *ppv); | |
1124 } | |
1125 | |
1126 interface ITypeMarshal : IUnknown | |
1127 { | |
1128 HRESULT Size(PVOID pvType,DWORD dwDestContext,PVOID pvDestContext,ULONG * pSize); | |
1129 HRESULT Marshal(PVOID pvType,DWORD dwDestContext,PVOID pvDestContext,ULONG cbBufferLength,BYTE * pBuffer,ULONG * pcbWritten); | |
1130 HRESULT Unmarshal(PVOID pvType,DWORD dwFlags,ULONG cbBufferLength,BYTE * pBuffer,ULONG * pcbRead); | |
1131 HRESULT Free(PVOID pvType); | |
1132 } | |
1133 | |
1134 | |
1135 interface IRecordInfo: IUnknown | |
1136 { | |
1137 HRESULT RecordInit(PVOID pvNew); | |
1138 HRESULT RecordClear(PVOID pvExisting); | |
1139 HRESULT RecordCopy(PVOID pvExisting,PVOID pvNew); | |
1140 HRESULT GetGuid(GUID * pguid); | |
1141 HRESULT GetName(BSTR * pbstrName); | |
1142 HRESULT GetSize(ULONG * pcbSize); | |
1143 HRESULT GetTypeInfo(ITypeInfo * ppTypeInfo); | |
1144 HRESULT GetField(PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField); | |
1145 HRESULT GetFieldNoCopy(PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField,PVOID * ppvDataCArray); | |
1146 HRESULT PutField(ULONG wFlags,PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField); | |
1147 HRESULT PutFieldNoCopy(ULONG wFlags,PVOID pvData,LPCOLESTR szFieldName,VARIANT * pvarField); | |
1148 HRESULT GetFieldNames(ULONG * pcNames,BSTR * rgBstrNames); | |
1149 BOOL IsMatchingType(IRecordInfo pRecordInfo); | |
1150 PVOID RecordCreate(); | |
1151 HRESULT RecordCreateCopy(PVOID pvSource,PVOID * ppvDest); | |
1152 HRESULT RecordDestroy(PVOID pvRecord); | |
1153 } | |
1154 alias IRecordInfo LPRECORDINFO; | |
1155 | |
1156 } // extern(WIndows); | |
1157 | |
1158 |