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