widl: Prevent NULL pointer de-refs on "void *" types.
[wine] / include / sqltypes.h
CommitLineData
8551f8ca 1/*
0799c1a7
AJ
2 * Copyright (C) 1999 Xiang Li
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
8551f8ca 17 */
0799c1a7 18
8551f8ca
AJ
19#ifndef __SQLTYPES_H
20#define __SQLTYPES_H
21
22#ifndef ODBCVER
23#define ODBCVER 0x0351
24#endif
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
8551f8ca 30typedef unsigned char SQLCHAR;
4e414963
PK
31#ifdef WINE_UNICODE_NATIVE
32typedef wchar_t SQLWCHAR;
33#else
34typedef unsigned short SQLWCHAR;
35#endif
36#ifndef UNICODE
37typedef SQLCHAR SQLTCHAR;
38#else
39typedef SQLWCHAR SQLTCHAR;
40#endif
8551f8ca
AJ
41
42#if (ODBCVER >= 0x0300)
43typedef unsigned char SQLDATE;
44typedef unsigned char SQLDECIMAL;
45typedef double SQLDOUBLE;
46typedef double SQLFLOAT;
47#endif
48
49typedef long SQLINTEGER;
50
51#if (ODBCVER >= 0x0300)
52typedef unsigned char SQLNUMERIC;
53#endif
54
55typedef void * SQLPOINTER;
56
57#if (ODBCVER >= 0x0300)
58typedef float SQLREAL;
59#endif
60
61typedef signed short int SQLSMALLINT;
62typedef unsigned short SQLUSMALLINT;
63
64#if (ODBCVER >= 0x0300)
65typedef unsigned char SQLTIME;
66typedef unsigned char SQLTIMESTAMP;
67typedef unsigned char SQLVARCHAR;
68#endif
69
70typedef SQLSMALLINT SQLRETURN;
71
72/* typedef void * SQLHANDLE; */
73
74typedef SQLINTEGER SQLHANDLE;
75#if (ODBCVER >= 0x0300)
76
77typedef SQLHANDLE SQLHENV;
78typedef SQLHANDLE SQLHDBC;
79typedef SQLHANDLE SQLHSTMT;
80typedef SQLHANDLE SQLHDESC;
81
82#else
83typedef SQLINTEGER SQLHENV;
84typedef SQLINTEGER SQLHDBC;
85typedef SQLINTEGER SQLHSTMT;
86#endif
87
88typedef signed char SCHAR;
89typedef SCHAR SQLSCHAR;
90typedef long int SDWORD;
91typedef signed short int SWORD;
92typedef unsigned long int UDWORD;
93typedef unsigned short int UWORD;
94typedef UDWORD SQLUINTEGER;
95typedef signed long SLONG;
96typedef signed short SSHORT;
97typedef double SDOUBLE;
98typedef double LDOUBLE;
99typedef float SFLOAT;
100typedef void* PTR;
101typedef signed short RETCODE;
102typedef void* SQLHWND;
103
104typedef SQLHANDLE HENV;
105typedef SQLHANDLE HDBC;
106typedef SQLHANDLE HSTMT;
107
108#ifndef __SQLDATE
109#define __SQLDATE
110typedef struct tagDATE_STRUCT
111{
112 SQLSMALLINT year;
113 SQLUSMALLINT month;
114 SQLUSMALLINT day;
115} DATE_STRUCT;
116
117#if (ODBCVER >= 0x0300)
118typedef DATE_STRUCT SQL_DATE_STRUCT;
119#endif
120
121typedef struct tagTIME_STRUCT
122{
123 SQLUSMALLINT hour;
124 SQLUSMALLINT minute;
125 SQLUSMALLINT second;
126} TIME_STRUCT;
127
128#if (ODBCVER >= 0x0300)
129typedef TIME_STRUCT SQL_TIME_STRUCT;
130#endif
131
132typedef struct tagTIMESTAMP_STRUCT
133{
134 SQLSMALLINT year;
135 SQLUSMALLINT month;
136 SQLUSMALLINT day;
137 SQLUSMALLINT hour;
138 SQLUSMALLINT minute;
139 SQLUSMALLINT second;
140 SQLUINTEGER fraction;
141} TIMESTAMP_STRUCT;
142
143#if (ODBCVER >= 0x0300)
144typedef TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT;
145#endif
146
147
148#if (ODBCVER >= 0x0300)
149typedef enum
150{
151 SQL_IS_YEAR = 1,
152 SQL_IS_MONTH = 2,
153 SQL_IS_DAY = 3,
154 SQL_IS_HOUR = 4,
155 SQL_IS_MINUTE = 5,
156 SQL_IS_SECOND = 6,
157 SQL_IS_YEAR_TO_MONTH = 7,
158 SQL_IS_DAY_TO_HOUR = 8,
159 SQL_IS_DAY_TO_MINUTE = 9,
160 SQL_IS_DAY_TO_SECOND = 10,
161 SQL_IS_HOUR_TO_MINUTE = 11,
162 SQL_IS_HOUR_TO_SECOND = 12,
163 SQL_IS_MINUTE_TO_SECOND = 13
164} SQLINTERVAL;
165
166#endif
167
168#if (ODBCVER >= 0x0300)
169typedef struct tagSQL_YEAR_MONTH
170{
171 SQLUINTEGER year;
172 SQLUINTEGER month;
173} SQL_YEAR_MONTH_STRUCT;
174
175typedef struct tagSQL_DAY_SECOND
176{
177 SQLUINTEGER day;
178 SQLUINTEGER hour;
179 SQLUINTEGER minute;
180 SQLUINTEGER second;
181 SQLUINTEGER fraction;
182} SQL_DAY_SECOND_STRUCT;
183
184typedef struct tagSQL_INTERVAL_STRUCT
185{
186 SQLINTERVAL interval_type;
187 SQLSMALLINT interval_sign;
188 union {
189 SQL_YEAR_MONTH_STRUCT year_month;
190 SQL_DAY_SECOND_STRUCT day_second;
191 } intval;
192
193} SQL_INTERVAL_STRUCT;
194
195#endif
196
197#endif
198
199#if (ODBCVER >= 0x0300)
200#define ODBCINT64 long
201#ifdef ODBCINT64
202typedef ODBCINT64 SQLBIGINT;
203typedef unsigned ODBCINT64 SQLUBIGINT;
204#endif
205#endif
206
207#if (ODBCVER >= 0x0300)
208#define SQL_MAX_NUMERIC_LEN 16
209typedef struct tagSQL_NUMERIC_STRUCT
210{
211 SQLCHAR precision;
212 SQLSCHAR scale;
213 SQLCHAR sign; /* 1=pos 0=neg */
214 SQLCHAR val[SQL_MAX_NUMERIC_LEN];
215} SQL_NUMERIC_STRUCT;
216#endif
217
218#if (ODBCVER >= 0x0350)
219#ifdef GUID_DEFINED
220typedef GUID SQLGUID;
221#else
222typedef struct tagSQLGUID
223{
224 DWORD Data1;
225 WORD Data2;
226 WORD Data3;
227 BYTE Data4[ 8 ];
228} SQLGUID;
229#endif
230#endif
231
232
233typedef unsigned long int BOOKMARK;
234
235#define SQL_WCHAR (-8)
236#define SQL_C_WCHAR SQL_WCHAR
237
238#ifdef __cplusplus
239}
240#endif
241
242#endif