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
36 #define IID_NULL GUID_NULL
37 #define CLSID_NULL GUID_NULL
38 #define CBPCLIPDATA(d) ((d).cbSize-sizeof((d).ulClipFmt))
39 #define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x01
40 #define ROTFLAGS_ALLOWANYCLIENT 0x02
42 #ifndef __BLOB_T_DEFINED /* also in winsock2.h */
43 #define __BLOB_T_DEFINED
44 typedef struct _BLOB {
47 } BLOB,*PBLOB,*LPBLOB;
50 typedef enum tagDVASPECT {
56 typedef enum tagDVASPECT2 {
58 DVASPECT_TRANSPARENT=32
60 typedef enum tagSTATFLAG {
64 typedef enum tagMEMCTX {
72 typedef enum tagMSHCTX {
75 MSHCTX_DIFFERENTMACHINE,
79 typedef enum tagCLSCTX {
80 CLSCTX_INPROC_SERVER=1,CLSCTX_INPROC_HANDLER=2,CLSCTX_LOCAL_SERVER=4,
81 CLSCTX_INPROC_SERVER16=8,CLSCTX_REMOTE_SERVER=16
83 typedef enum tagMSHLFLAGS {
84 MSHLFLAGS_NORMAL,MSHLFLAGS_TABLESTRONG,MSHLFLAGS_TABLEWEAK
86 typedef struct _FLAGGED_WORD_BLOB {
89 unsigned short asData[1];
93 typedef WCHAR OLECHAR;
94 typedef LPWSTR LPOLESTR;
95 typedef LPCWSTR LPCOLESTR;
96 #define OLESTR(s) L##s
100 typedef LPSTR LPOLESTR;
101 typedef LPCSTR LPCOLESTR;
105 typedef unsigned short VARTYPE;
106 typedef short VARIANT_BOOL;
107 typedef VARIANT_BOOL _VARIANT_BOOL;
108 #define VARIANT_TRUE ((VARIANT_BOOL)0xffff)
109 #define VARIANT_FALSE ((VARIANT_BOOL)0)
110 typedef OLECHAR *BSTR;
111 typedef FLAGGED_WORD_BLOB *wireBSTR;
112 typedef BSTR *LPBSTR;
114 typedef void *HCONTEXT;
115 typedef union tagCY {
116 _ANONYMOUS_STRUCT struct {
123 typedef struct tagBSTRBLOB {
127 typedef struct tagBSTRBLOB *LPBSTRBLOB;
128 typedef struct tagCLIPDATA {
133 typedef enum tagSTGC {
134 STGC_DEFAULT,STGC_OVERWRITE,STGC_ONLYIFCURRENT,
135 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE
137 typedef enum tagSTGMOVE {
138 STGMOVE_MOVE,STGMOVE_COPY,STGMOVE_SHALLOWCOPY
141 VT_EMPTY,VT_NULL,VT_I2,VT_I4,VT_R4,VT_R8,VT_CY,VT_DATE,VT_BSTR,VT_DISPATCH,
142 VT_ERROR,VT_BOOL,VT_VARIANT,VT_UNKNOWN,VT_DECIMAL,VT_I1=16,VT_UI1,VT_UI2,VT_UI4,VT_I8,
143 VT_UI8,VT_INT,VT_UINT,VT_VOID,VT_HRESULT,VT_PTR,VT_SAFEARRAY,VT_CARRAY,VT_USERDEFINED,
144 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,
145 VT_STORED_OBJECT,VT_BLOB_OBJECT,VT_CF,VT_CLSID,VT_BSTR_BLOB=0xfff,VT_VECTOR=0x1000,
146 VT_ARRAY=0x2000,VT_BYREF=0x4000,VT_RESERVED=0x8000,VT_ILLEGAL= 0xffff,VT_ILLEGALMASKED=0xfff,
150 typedef struct _BYTE_SIZEDARR {
151 unsigned long clSize;
154 typedef struct _SHORT_SIZEDARR {
155 unsigned long clSize;
156 unsigned short *pData;
158 typedef struct _LONG_SIZEDARR {
159 unsigned long clSize;
160 unsigned long *pData;
162 typedef struct _HYPER_SIZEDARR {
163 unsigned long clSize;
166 typedef double DOUBLE;
167 typedef struct tagDEC {
169 _ANONYMOUS_UNION union {
170 _ANONYMOUS_STRUCT struct {
177 _ANONYMOUS_UNION union {
178 _ANONYMOUS_STRUCT struct {
185 typedef DECIMAL *LPDECIMAL;
186 #define DECIMAL_NEG ((BYTE)0x80)
188 #ifdef NONAMELESSUNION
189 #define DECIMAL_SETZERO(d) {(d).DUMMYUNIONNAME2.Lo64=(d).Hi32=(d).DUMMYUNIONNAME.signscale=0;}
192 #define DECIMAL_SETZERO(d) {(d).Lo64=(d).Hi32=(d).signscale=0;}
195 typedef void *HMETAFILEPICT;