1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7  * Source: $(DRUNTIMESRC core/sys/windows/_wtypes.d)
8  */
9 module nulib.system.win32.wtypes;
10 import nulib.system.win32.rpc, nulib.system.win32.rpcndr;
11 import nulib.system.win32.windef;
12 public import nulib.system.com;
13 
14 enum ROTFLAGS_REGISTRATIONKEEPSALIVE = 0x01;
15 enum ROTFLAGS_ALLOWANYCLIENT         = 0x02;
16 
17 // also in winsock2.h
18 struct BLOB {
19     ULONG cbSize;
20     BYTE* pBlobData;
21 }
22 alias BLOB* PBLOB, LPBLOB;
23 
24 enum DVASPECT {
25     DVASPECT_CONTENT   = 1,
26     DVASPECT_THUMBNAIL = 2,
27     DVASPECT_ICON      = 4,
28     DVASPECT_DOCPRINT  = 8
29 }
30 
31 enum DVASPECT2 {
32     DVASPECT_OPAQUE      = 16,
33     DVASPECT_TRANSPARENT = 32
34 }
35 
36 enum STATFLAG {
37     STATFLAG_DEFAULT = 0,
38     STATFLAG_NONAME  = 1
39 }
40 
41 enum MEMCTX {
42     MEMCTX_LOCAL = 0,
43     MEMCTX_TASK,
44     MEMCTX_SHARED,
45     MEMCTX_MACSYSTEM,
46     MEMCTX_UNKNOWN = -1,
47     MEMCTX_SAME = -2
48 }
49 
50 enum MSHCTX {
51     MSHCTX_LOCAL = 0,
52     MSHCTX_NOSHAREDMEM,
53     MSHCTX_DIFFERENTMACHINE,
54     MSHCTX_INPROC,
55     MSHCTX_CROSSCTX
56 }
57 
58 enum CLSCTX {
59     CLSCTX_INPROC_SERVER    = 0x1,
60     CLSCTX_INPROC_HANDLER   = 0x2,
61     CLSCTX_LOCAL_SERVER     = 0x4,
62     CLSCTX_INPROC_SERVER16  = 0x8,
63     CLSCTX_REMOTE_SERVER    = 0x10,
64     CLSCTX_INPROC_HANDLER16 = 0x20,
65     CLSCTX_INPROC_SERVERX86 = 0x40,
66     CLSCTX_INPROC_HANDLERX86 = 0x80,
67 }
68 
69 enum MSHLFLAGS {
70     MSHLFLAGS_NORMAL,
71     MSHLFLAGS_TABLESTRONG,
72     MSHLFLAGS_TABLEWEAK
73 }
74 
75 struct FLAGGED_WORD_BLOB {
76     uint fFlags;
77     uint clSize;
78     ushort[1] asData;
79 }
80 
81 alias OLECHAR = WCHAR;
82 alias LPOLESTR = LPWSTR;
83 alias LPCOLESTR = LPCWSTR;
84 
85 alias VARTYPE = ushort;
86 alias VARIANT_BOOL = short;
87 alias _VARIANT_BOOL = VARIANT_BOOL;
88 enum VARIANT_BOOL VARIANT_TRUE = -1; // 0xffff;
89 enum VARIANT_BOOL VARIANT_FALSE = 0;
90 
91 alias BSTR = OLECHAR*;
92 alias wireBSTR = FLAGGED_WORD_BLOB*;
93 alias LPBSTR = BSTR*;
94 //alias SCODE = LONG; // also in winerror
95 alias HCONTEXT = HANDLE;
96 alias HMETAFILEPICT = HANDLE;
97 
98 union CY {
99     struct {
100         uint Lo;
101         int Hi;
102     }
103     LONGLONG int64;
104 }
105 
106 alias DATE = double;
107 struct  BSTRBLOB {
108     ULONG cbSize;
109     PBYTE pData;
110 }
111 alias LPBSTRBLOB = BSTRBLOB*;
112 
113 // Used only in the PROPVARIANT structure
114 // According to the 2003 SDK, this should be in propidl.h, not here.
115 struct CLIPDATA {
116     ULONG cbSize;
117     int ulClipFmt;
118     PBYTE pClipData;
119 }
120 
121 enum STGC {
122     STGC_DEFAULT,
123     STGC_OVERWRITE,
124     STGC_ONLYIFCURRENT,
125     STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
126 }
127 
128 enum STGMOVE {
129     STGMOVE_MOVE,
130     STGMOVE_COPY,
131     STGMOVE_SHALLOWCOPY
132 }
133 
134 enum VARENUM {
135     VT_EMPTY,
136     VT_NULL,
137     VT_I2,
138     VT_I4,
139     VT_R4,
140     VT_R8,
141     VT_CY,
142     VT_DATE,
143     VT_BSTR,
144     VT_DISPATCH,
145     VT_ERROR,
146     VT_BOOL,
147     VT_VARIANT,
148     VT_UNKNOWN,
149     VT_DECIMAL,
150     VT_I1 = 16,
151     VT_UI1,
152     VT_UI2,
153     VT_UI4,
154     VT_I8,
155     VT_UI8,
156     VT_INT,
157     VT_UINT,
158     VT_VOID,
159     VT_HRESULT,
160     VT_PTR,
161     VT_SAFEARRAY,
162     VT_CARRAY,
163     VT_USERDEFINED,
164     VT_LPSTR,
165     VT_LPWSTR,
166     VT_RECORD   = 36,
167     VT_INT_PTR  = 37,
168     VT_UINT_PTR = 38,
169     VT_FILETIME = 64,
170     VT_BLOB,
171     VT_STREAM,
172     VT_STORAGE,
173     VT_STREAMED_OBJECT,
174     VT_STORED_OBJECT,
175     VT_BLOB_OBJECT,
176     VT_CF,
177     VT_CLSID,
178     VT_BSTR_BLOB     = 0xfff,
179     VT_VECTOR        = 0x1000,
180     VT_ARRAY         = 0x2000,
181     VT_BYREF         = 0x4000,
182     VT_RESERVED      = 0x8000,
183     VT_ILLEGAL       = 0xffff,
184     VT_ILLEGALMASKED = 0xfff,
185     VT_TYPEMASK      = 0xfff
186 }
187 
188 struct BYTE_SIZEDARR {
189     uint clSize;
190     byte* pData;
191 }
192 
193 struct WORD_SIZEDARR {
194     uint clSize;
195     ushort* pData;
196 }
197 
198 struct DWORD_SIZEDARR {
199 uint clSize;
200 uint* pData;
201 }
202 
203 struct HYPER_SIZEDARR {
204     uint clSize;
205     hyper* pData;
206 }
207 
208 alias DOUBLE = double;
209 
210 
211 struct DECIMAL {
212     USHORT wReserved;
213     union {
214         struct {
215             ubyte scale; // valid values are 0 to 28
216             ubyte sign; // 0 for positive, DECIMAL_NEG for negatives.
217             enum ubyte DECIMAL_NEG = 0x80;
218         }
219         USHORT signscale;
220     }
221     ULONG Hi32;
222     union {
223         struct {
224             ULONG Lo32;
225             ULONG Mid32;
226         }
227         ULONGLONG Lo64;
228     }
229     // #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;}
230     void setZero() { Lo64 = 0; Hi32 = 0; signscale = 0; }
231 }