xref: /trunk/main/unixODBC/inc/sqltypes.h (revision 6e18eccd)
124201887SPedro Giffuni /*
224201887SPedro Giffuni  *  sqltypes.h
324201887SPedro Giffuni  *
4acaca342SPedro Giffuni  *  $Id: sqltypes.h,v 1.25 2009/09/09 20:06:24 source Exp $
524201887SPedro Giffuni  *
624201887SPedro Giffuni  *  ODBC typedefs
724201887SPedro Giffuni  *
824201887SPedro Giffuni  *  The iODBC driver manager.
924201887SPedro Giffuni  *
1024201887SPedro Giffuni  *  Copyright (C) 1995 by Ke Jin <kejin@empress.com>
11acaca342SPedro Giffuni  *  Copyright (C) 1996-2009 by OpenLink Software <iodbc@openlinksw.com>
1224201887SPedro Giffuni  *  All Rights Reserved.
1324201887SPedro Giffuni  *
1424201887SPedro Giffuni  *  This software is released under the terms of either of the following
1524201887SPedro Giffuni  *  licenses:
1624201887SPedro Giffuni  *
1724201887SPedro Giffuni  *      - GNU Library General Public License (see LICENSE.LGPL)
1824201887SPedro Giffuni  *      - The BSD License (see LICENSE.BSD).
1924201887SPedro Giffuni  *
2024201887SPedro Giffuni  *  Note that the only valid version of the LGPL license as far as this
2124201887SPedro Giffuni  *  project is concerned is the original GNU Library General Public License
2224201887SPedro Giffuni  *  Version 2, dated June 1991.
23cdf0e10cSrcweir  *
2424201887SPedro Giffuni  *  While not mandated by the BSD license, any patches you make to the
2524201887SPedro Giffuni  *  iODBC source code may be contributed back into the iODBC project
2624201887SPedro Giffuni  *  at your discretion. Contributions will benefit the Open Source and
2724201887SPedro Giffuni  *  Data Access community as a whole. Submissions may be made at:
28cdf0e10cSrcweir  *
2924201887SPedro Giffuni  *      http://www.iodbc.org
30cdf0e10cSrcweir  *
31cdf0e10cSrcweir  *
3224201887SPedro Giffuni  *  GNU Library Generic Public License Version 2
3324201887SPedro Giffuni  *  ============================================
3424201887SPedro Giffuni  *  This library is free software; you can redistribute it and/or
3524201887SPedro Giffuni  *  modify it under the terms of the GNU Library General Public
3624201887SPedro Giffuni  *  License as published by the Free Software Foundation; only
3724201887SPedro Giffuni  *  Version 2 of the License dated June 1991.
38cdf0e10cSrcweir  *
3924201887SPedro Giffuni  *  This library is distributed in the hope that it will be useful,
4024201887SPedro Giffuni  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
4124201887SPedro Giffuni  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
4224201887SPedro Giffuni  *  Library General Public License for more details.
4324201887SPedro Giffuni  *
4424201887SPedro Giffuni  *  You should have received a copy of the GNU Library General Public
4524201887SPedro Giffuni  *  License along with this library; if not, write to the Free
4624201887SPedro Giffuni  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
4724201887SPedro Giffuni  *
4824201887SPedro Giffuni  *
4924201887SPedro Giffuni  *  The BSD License
5024201887SPedro Giffuni  *  ===============
5124201887SPedro Giffuni  *  Redistribution and use in source and binary forms, with or without
5224201887SPedro Giffuni  *  modification, are permitted provided that the following conditions
5324201887SPedro Giffuni  *  are met:
5424201887SPedro Giffuni  *
5524201887SPedro Giffuni  *  1. Redistributions of source code must retain the above copyright
5624201887SPedro Giffuni  *     notice, this list of conditions and the following disclaimer.
5724201887SPedro Giffuni  *  2. Redistributions in binary form must reproduce the above copyright
5824201887SPedro Giffuni  *     notice, this list of conditions and the following disclaimer in
5924201887SPedro Giffuni  *     the documentation and/or other materials provided with the
6024201887SPedro Giffuni  *     distribution.
6124201887SPedro Giffuni  *  3. Neither the name of OpenLink Software Inc. nor the names of its
6224201887SPedro Giffuni  *     contributors may be used to endorse or promote products derived
6324201887SPedro Giffuni  *     from this software without specific prior written permission.
6424201887SPedro Giffuni  *
6524201887SPedro Giffuni  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
6624201887SPedro Giffuni  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
6724201887SPedro Giffuni  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6824201887SPedro Giffuni  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OPENLINK OR
6924201887SPedro Giffuni  *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
7024201887SPedro Giffuni  *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
7124201887SPedro Giffuni  *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
7224201887SPedro Giffuni  *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
7324201887SPedro Giffuni  *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
7424201887SPedro Giffuni  *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
7524201887SPedro Giffuni  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7624201887SPedro Giffuni  */
77cdf0e10cSrcweir 
7824201887SPedro Giffuni #ifndef _SQLTYPES_H
7924201887SPedro Giffuni #define _SQLTYPES_H
80cdf0e10cSrcweir 
8124201887SPedro Giffuni /*
8224201887SPedro Giffuni  *  Set default specification to  ODBC 3.51
83cdf0e10cSrcweir  */
8424201887SPedro Giffuni #ifndef ODBCVER
8524201887SPedro Giffuni #define ODBCVER		0x0351
86cdf0e10cSrcweir #endif
87cdf0e10cSrcweir 
88acaca342SPedro Giffuni /*
89acaca342SPedro Giffuni  *  Include Windows style defines and typedefs on Unix
90acaca342SPedro Giffuni  */
91acaca342SPedro Giffuni #ifndef _IODBCUNIX_H
92acaca342SPedro Giffuni #include <odbc/iodbcunix.h>
93acaca342SPedro Giffuni #endif
94acaca342SPedro Giffuni 
95cdf0e10cSrcweir #ifdef __cplusplus
96cdf0e10cSrcweir extern "C" {
97cdf0e10cSrcweir #endif
98cdf0e10cSrcweir 
99cdf0e10cSrcweir 
100cdf0e10cSrcweir /*
10124201887SPedro Giffuni  *  Environment specific definitions
102cdf0e10cSrcweir  */
10324201887SPedro Giffuni #ifndef EXPORT
10424201887SPedro Giffuni #define EXPORT
105cdf0e10cSrcweir #endif
106cdf0e10cSrcweir 
10724201887SPedro Giffuni #ifdef WIN32
10824201887SPedro Giffuni #define SQL_API	__stdcall
109*6e18eccdSPedro Giffuni #elif defined(OS2)
110*6e18eccdSPedro Giffuni #define SQL_API _System
111cdf0e10cSrcweir #else
112cdf0e10cSrcweir #define SQL_API
113cdf0e10cSrcweir #endif
114cdf0e10cSrcweir 
115cdf0e10cSrcweir 
11624201887SPedro Giffuni /*
11724201887SPedro Giffuni  *  API declaration data types
11824201887SPedro Giffuni  */
11924201887SPedro Giffuni typedef unsigned char		SQLCHAR;
12024201887SPedro Giffuni typedef signed short		SQLSMALLINT;
12124201887SPedro Giffuni typedef unsigned short		SQLUSMALLINT;
12224201887SPedro Giffuni #if (SIZEOF_LONG == 8)
12324201887SPedro Giffuni typedef signed int		SQLINTEGER;
12424201887SPedro Giffuni typedef unsigned int		SQLUINTEGER;
125cdf0e10cSrcweir #else
12624201887SPedro Giffuni typedef signed long		SQLINTEGER;
12724201887SPedro Giffuni typedef unsigned long		SQLUINTEGER;
128cdf0e10cSrcweir #endif
12924201887SPedro Giffuni typedef void *              	SQLPOINTER;
130cdf0e10cSrcweir 
13124201887SPedro Giffuni #if (ODBCVER >= 0x0300)
13224201887SPedro Giffuni typedef signed char		SQLSCHAR;
13324201887SPedro Giffuni typedef unsigned char		SQLDATE;
13424201887SPedro Giffuni typedef unsigned char		SQLDECIMAL;
13524201887SPedro Giffuni typedef unsigned char		SQLNUMERIC;
13624201887SPedro Giffuni typedef double			SQLDOUBLE;
13724201887SPedro Giffuni typedef double			SQLFLOAT;
13824201887SPedro Giffuni typedef float			SQLREAL;
13924201887SPedro Giffuni typedef unsigned char		SQLTIME;
14024201887SPedro Giffuni typedef unsigned char		SQLTIMESTAMP;
14124201887SPedro Giffuni typedef unsigned char		SQLVARCHAR;
14224201887SPedro Giffuni #endif	/* ODBCVER >= 0x0300 */
143cdf0e10cSrcweir 
144cdf0e10cSrcweir 
14524201887SPedro Giffuni /*
14624201887SPedro Giffuni  *  New Win64 datatypes
14724201887SPedro Giffuni  */
14824201887SPedro Giffuni #ifdef _WIN64
14924201887SPedro Giffuni typedef INT64			SQLLEN;
15024201887SPedro Giffuni typedef UINT64			SQLULEN;
15124201887SPedro Giffuni typedef UINT64			SQLSETPOSIROW;
15224201887SPedro Giffuni #elif defined(STRICT_ODBC_TYPES)
15324201887SPedro Giffuni typedef long			SQLLEN;
15424201887SPedro Giffuni typedef unsigned long		SQLULEN;
15524201887SPedro Giffuni typedef unsigned short		SQLSETPOSIROW;
156cdf0e10cSrcweir #else
15724201887SPedro Giffuni #define SQLLEN			long
15824201887SPedro Giffuni #define SQLULEN 		unsigned long
15924201887SPedro Giffuni #define SQLSETPOSIROW		unsigned short
160cdf0e10cSrcweir #endif
161cdf0e10cSrcweir 
162cdf0e10cSrcweir 
163cdf0e10cSrcweir /*
16424201887SPedro Giffuni  *  Backward compatibility with older platform sdks
165cdf0e10cSrcweir  */
16624201887SPedro Giffuni typedef SQLULEN 		SQLROWCOUNT;
16724201887SPedro Giffuni typedef SQLULEN 		SQLROWSETSIZE;
16824201887SPedro Giffuni typedef SQLULEN 		SQLTRANSID;
16924201887SPedro Giffuni typedef SQLLEN			SQLROWOFFSET;
170cdf0e10cSrcweir 
171cdf0e10cSrcweir 
17224201887SPedro Giffuni /*
17324201887SPedro Giffuni  *  Generic pointer types
174cdf0e10cSrcweir  */
17524201887SPedro Giffuni typedef void *              	PTR;
17624201887SPedro Giffuni typedef void *			SQLHANDLE;
177cdf0e10cSrcweir 
178cdf0e10cSrcweir 
17924201887SPedro Giffuni /*
18024201887SPedro Giffuni  *  Handles
18124201887SPedro Giffuni  */
18224201887SPedro Giffuni typedef void *			HENV;
18324201887SPedro Giffuni typedef void *			HDBC;
18424201887SPedro Giffuni typedef void *			HSTMT;
185cdf0e10cSrcweir 
18624201887SPedro Giffuni typedef SQLHANDLE		SQLHENV;
18724201887SPedro Giffuni typedef SQLHANDLE		SQLHDBC;
18824201887SPedro Giffuni typedef SQLHANDLE		SQLHSTMT;
189cdf0e10cSrcweir #if (ODBCVER >= 0x0300)
19024201887SPedro Giffuni typedef SQLHANDLE		SQLHDESC;
19124201887SPedro Giffuni #endif	/* ODBCVER >= 0x0300 */
192cdf0e10cSrcweir 
193cdf0e10cSrcweir 
19424201887SPedro Giffuni /*
19524201887SPedro Giffuni  *  Window Handle
19624201887SPedro Giffuni  */
197*6e18eccdSPedro Giffuni #if defined(WIN32) || defined (_WIN64)
198acaca342SPedro Giffuni typedef void*			HWND;	/* Make up for no windows.h */
19924201887SPedro Giffuni typedef HWND			SQLHWND;
20024201887SPedro Giffuni #elif defined(macintosh)
20124201887SPedro Giffuni #include <Dialogs.h>
20224201887SPedro Giffuni typedef WindowPtr 		HWND;
20324201887SPedro Giffuni typedef HWND 			SQLHWND;
204*6e18eccdSPedro Giffuni #elif defined(OS2)
205*6e18eccdSPedro Giffuni #ifndef _OS2_H // YD define only if system headers are not included
206*6e18eccdSPedro Giffuni typedef SQLPOINTER 		HWND;
207*6e18eccdSPedro Giffuni #endif
208*6e18eccdSPedro Giffuni typedef SQLPOINTER 		SQLHWND;
20924201887SPedro Giffuni #else
21024201887SPedro Giffuni typedef SQLPOINTER 		HWND;
21124201887SPedro Giffuni typedef SQLPOINTER 		SQLHWND;
212cdf0e10cSrcweir #endif
213cdf0e10cSrcweir 
214cdf0e10cSrcweir 
215cdf0e10cSrcweir /*
21624201887SPedro Giffuni  *  SQL portable types for C
217cdf0e10cSrcweir  */
21824201887SPedro Giffuni typedef unsigned char		UCHAR;
21924201887SPedro Giffuni typedef signed char		SCHAR;
22024201887SPedro Giffuni typedef short int		SWORD;
22124201887SPedro Giffuni typedef unsigned short int	UWORD;
22224201887SPedro Giffuni typedef long int		SDWORD;
22324201887SPedro Giffuni typedef unsigned long int	UDWORD;
22424201887SPedro Giffuni 
22524201887SPedro Giffuni typedef signed short		SSHORT;
22624201887SPedro Giffuni typedef unsigned short		USHORT;
22724201887SPedro Giffuni typedef signed long		SLONG;
22824201887SPedro Giffuni typedef unsigned long		ULONG;
22924201887SPedro Giffuni typedef float			SFLOAT;
23024201887SPedro Giffuni typedef double			SDOUBLE;
23124201887SPedro Giffuni typedef double			LDOUBLE;
232cdf0e10cSrcweir 
233cdf0e10cSrcweir 
23424201887SPedro Giffuni /*
23524201887SPedro Giffuni  *  Return type for functions
23624201887SPedro Giffuni  */
23724201887SPedro Giffuni typedef signed short		RETCODE;
23824201887SPedro Giffuni typedef SQLSMALLINT		SQLRETURN;
239cdf0e10cSrcweir 
240cdf0e10cSrcweir 
24124201887SPedro Giffuni /*
24224201887SPedro Giffuni  *  SQL portable types for C - DATA, TIME, TIMESTAMP, and BOOKMARK
24324201887SPedro Giffuni  */
24424201887SPedro Giffuni typedef SQLULEN			BOOKMARK;
245cdf0e10cSrcweir 
246cdf0e10cSrcweir 
247cdf0e10cSrcweir typedef struct tagDATE_STRUCT
24824201887SPedro Giffuni   {
24924201887SPedro Giffuni     SQLSMALLINT year;
25024201887SPedro Giffuni     SQLUSMALLINT month;
25124201887SPedro Giffuni     SQLUSMALLINT day;
25224201887SPedro Giffuni   }
25324201887SPedro Giffuni DATE_STRUCT;
254cdf0e10cSrcweir 
255cdf0e10cSrcweir #if (ODBCVER >= 0x0300)
25624201887SPedro Giffuni typedef DATE_STRUCT		SQL_DATE_STRUCT;
25724201887SPedro Giffuni #endif	/* ODBCVER >= 0x0300 */
25824201887SPedro Giffuni 
259cdf0e10cSrcweir 
260cdf0e10cSrcweir typedef struct tagTIME_STRUCT
26124201887SPedro Giffuni   {
26224201887SPedro Giffuni     SQLUSMALLINT hour;
26324201887SPedro Giffuni     SQLUSMALLINT minute;
26424201887SPedro Giffuni     SQLUSMALLINT second;
26524201887SPedro Giffuni   }
26624201887SPedro Giffuni TIME_STRUCT;
267cdf0e10cSrcweir 
268cdf0e10cSrcweir #if (ODBCVER >= 0x0300)
26924201887SPedro Giffuni typedef TIME_STRUCT		SQL_TIME_STRUCT;
27024201887SPedro Giffuni #endif	/* ODBCVER >= 0x0300 */
27124201887SPedro Giffuni 
272cdf0e10cSrcweir 
273cdf0e10cSrcweir typedef struct tagTIMESTAMP_STRUCT
27424201887SPedro Giffuni   {
27524201887SPedro Giffuni     SQLSMALLINT year;
27624201887SPedro Giffuni     SQLUSMALLINT month;
27724201887SPedro Giffuni     SQLUSMALLINT day;
27824201887SPedro Giffuni     SQLUSMALLINT hour;
27924201887SPedro Giffuni     SQLUSMALLINT minute;
28024201887SPedro Giffuni     SQLUSMALLINT second;
28124201887SPedro Giffuni     SQLUINTEGER fraction;
28224201887SPedro Giffuni   }
28324201887SPedro Giffuni TIMESTAMP_STRUCT;
284cdf0e10cSrcweir 
285cdf0e10cSrcweir #if (ODBCVER >= 0x0300)
286cdf0e10cSrcweir typedef TIMESTAMP_STRUCT	SQL_TIMESTAMP_STRUCT;
28724201887SPedro Giffuni #endif	/* ODBCVER >= 0x0300 */
288cdf0e10cSrcweir 
289cdf0e10cSrcweir 
29024201887SPedro Giffuni /*
29124201887SPedro Giffuni  *  Enumeration for DATETIME_INTERVAL_SUBCODE values for interval data types
29224201887SPedro Giffuni  *
29324201887SPedro Giffuni  *  These values are from SQL-92
29424201887SPedro Giffuni  */
295cdf0e10cSrcweir #if (ODBCVER >= 0x0300)
296cdf0e10cSrcweir typedef enum
29724201887SPedro Giffuni   {
29824201887SPedro Giffuni     SQL_IS_YEAR			= 1,
29924201887SPedro Giffuni     SQL_IS_MONTH		= 2,
30024201887SPedro Giffuni     SQL_IS_DAY			= 3,
30124201887SPedro Giffuni     SQL_IS_HOUR			= 4,
30224201887SPedro Giffuni     SQL_IS_MINUTE		= 5,
30324201887SPedro Giffuni     SQL_IS_SECOND		= 6,
30424201887SPedro Giffuni     SQL_IS_YEAR_TO_MONTH	= 7,
30524201887SPedro Giffuni     SQL_IS_DAY_TO_HOUR		= 8,
30624201887SPedro Giffuni     SQL_IS_DAY_TO_MINUTE	= 9,
30724201887SPedro Giffuni     SQL_IS_DAY_TO_SECOND	= 10,
30824201887SPedro Giffuni     SQL_IS_HOUR_TO_MINUTE	= 11,
30924201887SPedro Giffuni     SQL_IS_HOUR_TO_SECOND	= 12,
31024201887SPedro Giffuni     SQL_IS_MINUTE_TO_SECOND	= 13
31124201887SPedro Giffuni   }
31224201887SPedro Giffuni SQLINTERVAL;
313cdf0e10cSrcweir 
314cdf0e10cSrcweir 
315cdf0e10cSrcweir typedef struct tagSQL_YEAR_MONTH
31624201887SPedro Giffuni   {
31724201887SPedro Giffuni     SQLUINTEGER year;
31824201887SPedro Giffuni     SQLUINTEGER month;
31924201887SPedro Giffuni   }
32024201887SPedro Giffuni SQL_YEAR_MONTH_STRUCT;
32124201887SPedro Giffuni 
322cdf0e10cSrcweir 
323cdf0e10cSrcweir typedef struct tagSQL_DAY_SECOND
32424201887SPedro Giffuni   {
32524201887SPedro Giffuni     SQLUINTEGER day;
32624201887SPedro Giffuni     SQLUINTEGER hour;
32724201887SPedro Giffuni     SQLUINTEGER minute;
32824201887SPedro Giffuni     SQLUINTEGER second;
32924201887SPedro Giffuni     SQLUINTEGER fraction;
33024201887SPedro Giffuni   }
33124201887SPedro Giffuni SQL_DAY_SECOND_STRUCT;
33224201887SPedro Giffuni 
333cdf0e10cSrcweir 
334cdf0e10cSrcweir typedef struct tagSQL_INTERVAL_STRUCT
33524201887SPedro Giffuni   {
33624201887SPedro Giffuni     SQLINTERVAL interval_type;
33724201887SPedro Giffuni     SQLSMALLINT interval_sign;
33824201887SPedro Giffuni     union
33924201887SPedro Giffuni       {
34024201887SPedro Giffuni 	SQL_YEAR_MONTH_STRUCT year_month;
34124201887SPedro Giffuni 	SQL_DAY_SECOND_STRUCT day_second;
34224201887SPedro Giffuni       }
34324201887SPedro Giffuni     intval;
34424201887SPedro Giffuni   }
34524201887SPedro Giffuni SQL_INTERVAL_STRUCT;
34624201887SPedro Giffuni #endif	/* ODBCVER >= 0x0300 */
347cdf0e10cSrcweir 
348cdf0e10cSrcweir 
34924201887SPedro Giffuni /*
35024201887SPedro Giffuni  *  The ODBC C types for SQL_C_SBIGINT and SQL_C_UBIGINT
35124201887SPedro Giffuni  */
35224201887SPedro Giffuni #if (ODBCVER >= 0x0300)
353cdf0e10cSrcweir 
35424201887SPedro Giffuni #if (_MSC_VER >= 900)
35524201887SPedro Giffuni #  define ODBCINT64 		__int64
356cdf0e10cSrcweir #endif
357cdf0e10cSrcweir 
358cdf0e10cSrcweir #ifndef ODBCINT64
35924201887SPedro Giffuni # if (SIZEOF_LONG == 8)
36024201887SPedro Giffuni #   define ODBCINT64		long
361cdf0e10cSrcweir # else
36224201887SPedro Giffuni #   define ODBCINT64		long long
363cdf0e10cSrcweir # endif
36424201887SPedro Giffuni #endif /* ODBCINT64 */
365cdf0e10cSrcweir 
36624201887SPedro Giffuni #if defined (ODBCINT64)
36724201887SPedro Giffuni typedef signed   ODBCINT64	SQLBIGINT;
36824201887SPedro Giffuni typedef unsigned ODBCINT64	SQLUBIGINT;
36924201887SPedro Giffuni #endif	/* ODBCINT64 */
37024201887SPedro Giffuni 
37124201887SPedro Giffuni #endif	/* ODBCVER >= 0x0300 */
372cdf0e10cSrcweir 
373cdf0e10cSrcweir 
37424201887SPedro Giffuni /*
37524201887SPedro Giffuni  *  The internal representation of the numeric data type
37624201887SPedro Giffuni  */
377cdf0e10cSrcweir #if (ODBCVER >= 0x0300)
37824201887SPedro Giffuni #define SQL_MAX_NUMERIC_LEN	16
379cdf0e10cSrcweir typedef struct tagSQL_NUMERIC_STRUCT
38024201887SPedro Giffuni   {
38124201887SPedro Giffuni     SQLCHAR	precision;
38224201887SPedro Giffuni     SQLSCHAR	scale;
38324201887SPedro Giffuni     SQLCHAR	sign;		/* 0 for negative, 1 for positive */
38424201887SPedro Giffuni     SQLCHAR	val[SQL_MAX_NUMERIC_LEN];
38524201887SPedro Giffuni   }
38624201887SPedro Giffuni SQL_NUMERIC_STRUCT;
38724201887SPedro Giffuni #endif	/* ODBCVER >= 0x0300 */
38824201887SPedro Giffuni 
389cdf0e10cSrcweir 
390cdf0e10cSrcweir #if (ODBCVER >= 0x0350)
391cdf0e10cSrcweir #ifdef GUID_DEFINED
39224201887SPedro Giffuni typedef GUID 			SQLGUID;
393cdf0e10cSrcweir #else
39424201887SPedro Giffuni typedef struct tagSQLGUID
39524201887SPedro Giffuni   {
39624201887SPedro Giffuni     unsigned int	Data1;
39724201887SPedro Giffuni     unsigned short	Data2;
39824201887SPedro Giffuni     unsigned short	Data3;
39924201887SPedro Giffuni     unsigned char	Data4[8];	/* BYTE */
40024201887SPedro Giffuni   }
40124201887SPedro Giffuni SQLGUID;
40224201887SPedro Giffuni #endif	/* GUID_DEFINED */
40324201887SPedro Giffuni #endif	/* ODBCVER >= 0x0350 */
40424201887SPedro Giffuni 
40524201887SPedro Giffuni 
40624201887SPedro Giffuni #if defined(WIN32)
40724201887SPedro Giffuni typedef unsigned short SQLWCHAR;
408cdf0e10cSrcweir #else
40924201887SPedro Giffuni #  include <stdlib.h>
41024201887SPedro Giffuni 
41124201887SPedro Giffuni #  if defined(__cplusplus)		|| \
41224201887SPedro Giffuni       defined(_WCHAR_T)			|| \
41324201887SPedro Giffuni       defined(_WCHAR_T_DEFINED)		|| \
41424201887SPedro Giffuni       defined(_WCHAR_T_DEFINED_)	|| \
41524201887SPedro Giffuni       defined(_WCHAR_T_DECLARED)	|| \
41624201887SPedro Giffuni       defined(_BSD_WCHAR_T_DEFINED_)	|| \
41724201887SPedro Giffuni       defined(_BSD_WCHAR_T_)		|| \
41824201887SPedro Giffuni       defined(_BSD_CT_RUNE_T_)
41924201887SPedro Giffuni typedef wchar_t SQLWCHAR;
42024201887SPedro Giffuni #  else
42124201887SPedro Giffuni #    error Please make sure your system supports the wchar_t type
42224201887SPedro Giffuni #  endif
42324201887SPedro Giffuni #endif /* WIN32 */
424cdf0e10cSrcweir 
425cdf0e10cSrcweir 
426cdf0e10cSrcweir #ifdef UNICODE
42724201887SPedro Giffuni typedef SQLWCHAR        	SQLTCHAR;
428cdf0e10cSrcweir #else
42924201887SPedro Giffuni typedef SQLCHAR         	SQLTCHAR;
43024201887SPedro Giffuni #endif  /* UNICODE */
431cdf0e10cSrcweir 
432cdf0e10cSrcweir #ifdef __cplusplus
433cdf0e10cSrcweir }
434cdf0e10cSrcweir #endif
435cdf0e10cSrcweir 
43624201887SPedro Giffuni #endif	/* _SQLTYPES_H */
437