1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef __SQLTYPES
7 #define __SQLTYPES
8 
9 #ifndef ODBCVER
10 #define ODBCVER 0x0351
11 #endif
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 #ifndef EXPORT
18 #define EXPORT
19 #endif
20 
21 #if defined(_ARM_)
22 #define SQL_API
23 #else
24 #define SQL_API __stdcall
25 #endif
26 
27 #ifndef RC_INVOKED
28 
29   typedef unsigned char SQLCHAR;
30 #if (ODBCVER >= 0x0300)
31   typedef signed char SQLSCHAR;
32   typedef unsigned char SQLDATE;
33   typedef unsigned char SQLDECIMAL;
34   typedef double SQLDOUBLE;
35   typedef double SQLFLOAT;
36 #endif
37   typedef __LONG32 SQLINTEGER;
38   typedef unsigned __LONG32 SQLUINTEGER;
39 
40 #ifdef _WIN64
41   typedef INT64 SQLLEN;
42   typedef UINT64 SQLULEN;
43   typedef UINT64 SQLSETPOSIROW;
44 #else
45 #define SQLLEN SQLINTEGER
46 #define SQLULEN SQLUINTEGER
47 #define SQLSETPOSIROW SQLUSMALLINT
48 #endif
49 
50   typedef SQLULEN SQLROWCOUNT;
51   typedef SQLULEN SQLROWSETSIZE;
52   typedef SQLULEN SQLTRANSID;
53   typedef SQLLEN SQLROWOFFSET;
54 
55 #if (ODBCVER >= 0x0300)
56   typedef unsigned char SQLNUMERIC;
57 #endif
58   typedef void *SQLPOINTER;
59 #if (ODBCVER >= 0x0300)
60   typedef float SQLREAL;
61 #endif
62   typedef short SQLSMALLINT;
63   typedef unsigned short SQLUSMALLINT;
64 #if (ODBCVER >= 0x0300)
65   typedef unsigned char SQLTIME;
66   typedef unsigned char SQLTIMESTAMP;
67   typedef unsigned char SQLVARCHAR;
68 #endif
69 
70   typedef SQLSMALLINT SQLRETURN;
71 
72 #if (ODBCVER >= 0x0300)
73   typedef void *SQLHANDLE;
74   typedef SQLHANDLE SQLHENV;
75   typedef SQLHANDLE SQLHDBC;
76   typedef SQLHANDLE SQLHSTMT;
77   typedef SQLHANDLE SQLHDESC;
78 #else
79   typedef void *SQLHENV;
80   typedef void *SQLHDBC;
81   typedef void *SQLHSTMT;
82 #endif
83 
84 #ifndef BASETYPES
85 #define BASETYPES
86   typedef unsigned __LONG32 ULONG;
87   typedef ULONG *PULONG;
88   typedef unsigned short USHORT;
89   typedef USHORT *PUSHORT;
90   typedef unsigned char UCHAR;
91   typedef UCHAR *PUCHAR;
92   typedef char *PSZ;
93 #endif
94 
95   typedef signed char SCHAR;
96 #if (ODBCVER < 0x0300)
97   typedef SCHAR SQLSCHAR;
98 #endif
99   typedef __LONG32 SDWORD;
100   typedef short int SWORD;
101   typedef unsigned __LONG32 UDWORD;
102   typedef unsigned short int UWORD;
103 
104   typedef signed __LONG32 SLONG;
105   typedef signed short SSHORT;
106   typedef double SDOUBLE;
107   typedef double LDOUBLE;
108   typedef float SFLOAT;
109   typedef void *PTR;
110   typedef void *HENV;
111   typedef void *HDBC;
112   typedef void *HSTMT;
113   typedef signed short RETCODE;
114   typedef HWND SQLHWND;
115 
116 #ifndef __SQLDATE
117 #define __SQLDATE
118 
119   typedef struct tagDATE_STRUCT {
120     SQLSMALLINT year;
121     SQLUSMALLINT month;
122     SQLUSMALLINT day;
123   } DATE_STRUCT;
124 
125 #if (ODBCVER >= 0x0300)
126   typedef DATE_STRUCT SQL_DATE_STRUCT;
127 #endif
128 
129   typedef struct tagTIME_STRUCT {
130     SQLUSMALLINT hour;
131     SQLUSMALLINT minute;
132     SQLUSMALLINT second;
133   } TIME_STRUCT;
134 
135 #if (ODBCVER >= 0x0300)
136   typedef TIME_STRUCT SQL_TIME_STRUCT;
137 #endif
138 
139   typedef struct tagTIMESTAMP_STRUCT {
140     SQLSMALLINT year;
141     SQLUSMALLINT month;
142     SQLUSMALLINT day;
143     SQLUSMALLINT hour;
144     SQLUSMALLINT minute;
145     SQLUSMALLINT second;
146     SQLUINTEGER fraction;
147   } TIMESTAMP_STRUCT;
148 
149 #if (ODBCVER >= 0x0300)
150   typedef TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT;
151 #endif
152 
153 #if (ODBCVER >= 0x0300)
154   typedef enum {
155     SQL_IS_YEAR = 1,SQL_IS_MONTH = 2,SQL_IS_DAY = 3,SQL_IS_HOUR = 4,SQL_IS_MINUTE = 5,SQL_IS_SECOND = 6,SQL_IS_YEAR_TO_MONTH = 7,
156     SQL_IS_DAY_TO_HOUR = 8,SQL_IS_DAY_TO_MINUTE = 9,SQL_IS_DAY_TO_SECOND = 10,SQL_IS_HOUR_TO_MINUTE = 11,SQL_IS_HOUR_TO_SECOND = 12,
157     SQL_IS_MINUTE_TO_SECOND = 13
158   } SQLINTERVAL;
159 #endif
160 
161 #if (ODBCVER >= 0x0300)
162   typedef struct tagSQL_YEAR_MONTH {
163     SQLUINTEGER year;
164     SQLUINTEGER month;
165   } SQL_YEAR_MONTH_STRUCT;
166 
167   typedef struct tagSQL_DAY_SECOND {
168     SQLUINTEGER day;
169     SQLUINTEGER hour;
170     SQLUINTEGER minute;
171     SQLUINTEGER second;
172     SQLUINTEGER fraction;
173   } SQL_DAY_SECOND_STRUCT;
174 
175   typedef struct tagSQL_INTERVAL_STRUCT {
176     SQLINTERVAL interval_type;
177     SQLSMALLINT interval_sign;
178     union {
179       SQL_YEAR_MONTH_STRUCT year_month;
180       SQL_DAY_SECOND_STRUCT day_second;
181     } intval;
182   } SQL_INTERVAL_STRUCT;
183 #endif
184 #endif
185 
186 #if (ODBCVER >= 0x0300)
187 #define ODBCINT64 /* __MINGW_EXTENSION */ __int64
188   __MINGW_EXTENSION typedef ODBCINT64 SQLBIGINT;
189   __MINGW_EXTENSION typedef unsigned ODBCINT64 SQLUBIGINT;
190 #endif
191 
192 #if (ODBCVER >= 0x0300)
193 #define SQL_MAX_NUMERIC_LEN 16
194   typedef struct tagSQL_NUMERIC_STRUCT {
195     SQLCHAR precision;
196     SQLSCHAR scale;
197     SQLCHAR sign;
198     SQLCHAR val[SQL_MAX_NUMERIC_LEN];
199   } SQL_NUMERIC_STRUCT;
200 #endif
201 
202 #if (ODBCVER >= 0x0350)
203 #ifdef GUID_DEFINED
204   typedef GUID SQLGUID;
205 #else
206 
207   typedef struct tagSQLGUID {
208     DWORD Data1;
209     WORD Data2;
210     WORD Data3;
211     BYTE Data4[8 ];
212   } SQLGUID;
213 #endif
214 #endif
215 
216   typedef SQLULEN BOOKMARK;
217 
218 #ifdef _WCHAR_T_DEFINED
219   typedef wchar_t SQLWCHAR;
220 #else
221   typedef unsigned short SQLWCHAR;
222 #endif
223 
224 #if defined(UNICODE)
225   typedef SQLWCHAR SQLTCHAR;
226 #else
227   typedef SQLCHAR SQLTCHAR;
228 #endif
229 #endif
230 
231 #ifdef __cplusplus
232 }
233 #endif
234 #endif
235