3 * @copy 2012 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 #pragma GCC system_header
35 #define IID_NULL GUID_NULL
36 #define CLSID_NULL GUID_NULL
37 #define CBPCLIPDATA(d) ((d).cbSize-sizeof((d).ulClipFmt))
38 #define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x01
39 #define ROTFLAGS_ALLOWANYCLIENT 0x02
41 #ifndef __BLOB_T_DEFINED /* also in winsock2.h */
42 #define __BLOB_T_DEFINED
43 typedef struct _BLOB {
46 } BLOB,*PBLOB,*LPBLOB;
48 typedef enum tagDVASPECT {
54 typedef enum tagDVASPECT2 {
56 DVASPECT_TRANSPARENT=32
58 typedef enum tagSTATFLAG {
62 typedef enum tagMEMCTX {
70 typedef enum tagMSHCTX {
73 MSHCTX_DIFFERENTMACHINE,
77 typedef enum tagCLSCTX {
78 CLSCTX_INPROC_SERVER=1,CLSCTX_INPROC_HANDLER=2,CLSCTX_LOCAL_SERVER=4,
79 CLSCTX_INPROC_SERVER16=8,CLSCTX_REMOTE_SERVER=16
81 typedef enum tagMSHLFLAGS {
82 MSHLFLAGS_NORMAL,MSHLFLAGS_TABLESTRONG,MSHLFLAGS_TABLEWEAK
84 typedef struct _FLAGGED_WORD_BLOB {
87 unsigned short asData[1];
91 typedef WCHAR OLECHAR;
92 typedef LPWSTR LPOLESTR;
93 typedef LPCWSTR LPCOLESTR;
94 #define OLESTR(s) L##s
97 typedef LPSTR LPOLESTR;
98 typedef LPCSTR LPCOLESTR;
101 typedef unsigned short VARTYPE;
102 typedef short VARIANT_BOOL;
103 typedef VARIANT_BOOL _VARIANT_BOOL;
104 #define VARIANT_TRUE ((VARIANT_BOOL)0xffff)
105 #define VARIANT_FALSE ((VARIANT_BOOL)0)
106 typedef OLECHAR *BSTR;
107 typedef FLAGGED_WORD_BLOB *wireBSTR;
108 typedef BSTR *LPBSTR;
110 typedef void *HCONTEXT;
111 typedef union tagCY {
112 _ANONYMOUS_STRUCT struct {
119 typedef struct tagBSTRBLOB {
123 typedef struct tagBSTRBLOB *LPBSTRBLOB;
124 typedef struct tagCLIPDATA {
129 typedef enum tagSTGC {
130 STGC_DEFAULT,STGC_OVERWRITE,STGC_ONLYIFCURRENT,
131 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
133 typedef enum tagSTGMOVE {
134 STGMOVE_MOVE,STGMOVE_COPY,STGMOVE_SHALLOWCOPY
137 VT_EMPTY,VT_NULL,VT_I2,VT_I4,VT_R4,VT_R8,VT_CY,VT_DATE,VT_BSTR,VT_DISPATCH,
138 VT_ERROR,VT_BOOL,VT_VARIANT,VT_UNKNOWN,VT_DECIMAL,VT_I1=16,VT_UI1,VT_UI2,VT_UI4,VT_I8,
139 VT_UI8,VT_INT,VT_UINT,VT_VOID,VT_HRESULT,VT_PTR,VT_SAFEARRAY,VT_CARRAY,VT_USERDEFINED,
140 VT_LPSTR,VT_LPWSTR,VT_RECORD=36,VT_INT_PTR=37,VT_UINT_PTR=38,VT_FILETIME=64,VT_BLOB,VT_STREAM,VT_STORAGE,VT_STREAMED_OBJECT,
141 VT_STORED_OBJECT,VT_BLOB_OBJECT,VT_CF,VT_CLSID,VT_BSTR_BLOB=0xfff,VT_VECTOR=0x1000,
142 VT_ARRAY=0x2000,VT_BYREF=0x4000,VT_RESERVED=0x8000,VT_ILLEGAL= 0xffff,VT_ILLEGALMASKED=0xfff,
146 typedef struct _BYTE_SIZEDARR {
147 unsigned long clSize;
150 typedef struct _SHORT_SIZEDARR {
151 unsigned long clSize;
152 unsigned short *pData;
154 typedef struct _LONG_SIZEDARR {
155 unsigned long clSize;
156 unsigned long *pData;
158 typedef struct _HYPER_SIZEDARR {
159 unsigned long clSize;
162 typedef double DOUBLE;
163 typedef struct tagDEC {
165 _ANONYMOUS_UNION union {
166 _ANONYMOUS_STRUCT struct {
173 _ANONYMOUS_UNION union {
174 _ANONYMOUS_STRUCT struct {
181 typedef DECIMAL *LPDECIMAL;
182 #define DECIMAL_NEG ((BYTE)0x80)
183 #ifdef NONAMELESSUNION
184 #define DECIMAL_SETZERO(d) {(d).DUMMYUNIONNAME2.Lo64=(d).Hi32=(d).DUMMYUNIONNAME.signscale=0;}
186 #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;}
188 typedef void *HMETAFILEPICT;