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
14extern "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