OSDN Git Service

168dc7f98f5a8f018aaf052eb5f36c290bba6654
[mingw/mingw-org-wsl.git] / include / sqltypes.h
1 /**
2  * @file sqltypes.h
3  * @copy 2012 MinGW.org project
4  *
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:
11  * 
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
14  * Software.
15  * 
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.
23  */
24 #ifndef _SQLTYPES_H
25 #define _SQLTYPES_H
26 #pragma GCC system_header
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 #define SQL_API __stdcall
32 #ifndef RC_INVOKED
33 #define __need_wchar_t
34 #include <stddef.h>
35 typedef signed char SCHAR;
36 typedef long SDWORD;
37 typedef short SWORD;
38 typedef ULONG UDWORD;
39 typedef USHORT UWORD;
40 typedef signed long SLONG;
41 typedef signed short SSHORT;
42 typedef double SDOUBLE;
43 typedef double LDOUBLE;
44 typedef float SFLOAT;
45 typedef PVOID PTR;
46 typedef PVOID HENV;
47 typedef PVOID HDBC;
48 typedef PVOID HSTMT;
49 typedef short RETCODE;
50 typedef UCHAR SQLCHAR;
51 typedef SCHAR SQLSCHAR;
52 typedef SDWORD SQLINTEGER;
53 typedef SWORD SQLSMALLINT;
54 #ifndef __WIN64
55 typedef UDWORD SQLUINTEGER;
56 #endif
57 typedef UWORD SQLUSMALLINT;
58 typedef PVOID SQLPOINTER;
59 #if (ODBCVER >= 0x0300)
60 typedef void* SQLHANDLE;
61 typedef SQLHANDLE SQLHENV;
62 typedef SQLHANDLE SQLHDBC;
63 typedef SQLHANDLE SQLHSTMT;
64 typedef SQLHANDLE SQLHDESC;
65 #else
66 typedef void* SQLHENV;
67 typedef void* SQLHDBC;
68 typedef void* SQLHSTMT;
69 #endif
70 typedef SQLSMALLINT SQLRETURN;
71 typedef HWND SQLHWND;
72 typedef ULONG BOOKMARK;
73 #ifdef _WIN64
74 typedef INT64 SQLLEN;
75 typedef INT64 SQLROWOFFSET;
76 typedef UINT64 SQLROWCOUNT;
77 typedef UINT64 SQLULEN;
78 typedef UINT64 SQLTRANSID;
79 typedef unsigned long SQLSETPOSIROW;
80 #else
81 #define SQLLEN SQLINTEGER
82 #define SQLROWOFFSET SQLINTEGER
83 #define SQLROWCOUNT SQLUINTEGER
84 #define SQLULEN SQLUINTEGER
85 #define SQLTRANSID DWORD
86 #define SQLSETPOSIROW SQLUSMALLINT
87 #endif
88 typedef wchar_t SQLWCHAR;
89 #ifdef UNICODE
90 typedef SQLWCHAR        SQLTCHAR;
91 #else
92 typedef SQLCHAR         SQLTCHAR;
93 #endif  /* UNICODE */
94 #if (ODBCVER >= 0x0300)
95 typedef unsigned char   SQLDATE;
96 typedef unsigned char   SQLDECIMAL;
97 typedef double          SQLDOUBLE;
98 typedef double          SQLFLOAT;
99 typedef unsigned char   SQLNUMERIC;
100 typedef float           SQLREAL;
101 typedef unsigned char   SQLTIME;
102 typedef unsigned char   SQLTIMESTAMP;
103 typedef unsigned char   SQLVARCHAR;
104 #define ODBCINT64       __int64
105 typedef __int64 SQLBIGINT;
106 typedef unsigned __int64 SQLUBIGINT;
107 #endif
108
109 typedef struct tagDATE_STRUCT {
110         SQLSMALLINT year;
111         SQLUSMALLINT month;
112         SQLUSMALLINT day;
113 } DATE_STRUCT;
114 typedef struct tagTIME_STRUCT {
115         SQLUSMALLINT hour;
116         SQLUSMALLINT minute;
117         SQLUSMALLINT second;
118 } TIME_STRUCT;
119 typedef struct tagTIMESTAMP_STRUCT {
120         SQLSMALLINT year;
121         SQLUSMALLINT month;
122         SQLUSMALLINT day;
123         SQLUSMALLINT hour;
124         SQLUSMALLINT minute;
125         SQLUSMALLINT second;
126         SQLUINTEGER fraction;
127 } TIMESTAMP_STRUCT;
128 #if (ODBCVER >= 0x0300)
129 typedef DATE_STRUCT     SQL_DATE_STRUCT;
130 typedef TIME_STRUCT     SQL_TIME_STRUCT;
131 typedef TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT;
132 typedef enum {
133         SQL_IS_YEAR = 1,SQL_IS_MONTH,SQL_IS_DAY,SQL_IS_HOUR,
134         SQL_IS_MINUTE,SQL_IS_SECOND,SQL_IS_YEAR_TO_MONTH,SQL_IS_DAY_TO_HOUR,
135         SQL_IS_DAY_TO_MINUTE,SQL_IS_DAY_TO_SECOND,SQL_IS_HOUR_TO_MINUTE,
136         SQL_IS_HOUR_TO_SECOND,SQL_IS_MINUTE_TO_SECOND
137 } SQLINTERVAL;
138 typedef struct tagSQL_YEAR_MONTH {
139         SQLUINTEGER year;
140         SQLUINTEGER month;
141 } SQL_YEAR_MONTH_STRUCT;
142 typedef struct tagSQL_DAY_SECOND {
143         SQLUINTEGER day;
144         SQLUINTEGER     hour;
145         SQLUINTEGER minute;
146         SQLUINTEGER second;
147         SQLUINTEGER fraction;
148 } SQL_DAY_SECOND_STRUCT;
149 typedef struct tagSQL_INTERVAL_STRUCT {
150         SQLINTERVAL interval_type;
151         SQLSMALLINT interval_sign;
152         union {
153                 SQL_YEAR_MONTH_STRUCT year_month;
154                 SQL_DAY_SECOND_STRUCT day_second;
155         } intval;
156 } SQL_INTERVAL_STRUCT;
157 #define SQL_MAX_NUMERIC_LEN 16
158 typedef struct tagSQL_NUMERIC_STRUCT {
159         SQLCHAR precision;
160         SQLSCHAR scale;
161         SQLCHAR sign;
162         SQLCHAR val[SQL_MAX_NUMERIC_LEN];
163 } SQL_NUMERIC_STRUCT;
164 #endif  /* ODBCVER >= 0x0300 */
165 #if (ODBCVER >= 0x0350)
166
167 #ifdef _GUID_DEFINED
168 # warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
169 #endif
170
171 #if defined _GUID_DEFINED || defined GUID_DEFINED
172 typedef GUID SQLGUID;
173 #else
174 typedef struct tagSQLGUID{
175     DWORD Data1;
176     WORD Data2;
177     WORD Data3;
178     BYTE Data4[ 8 ];
179 } SQLGUID;
180 #endif  /* GUID_DEFINED */
181 #endif  /* ODBCVER >= 0x0350 */
182 #endif     /* RC_INVOKED */
183 #ifdef __cplusplus
184 }
185 #endif
186 #endif