/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the w64 mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef __SQLTYPES
#define __SQLTYPES

#ifndef ODBCVER
#define ODBCVER 0x0351
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifndef EXPORT
#define EXPORT
#endif

#define SQL_API __stdcall

#ifndef RC_INVOKED

  typedef unsigned char SQLCHAR;
#if (ODBCVER >= 0x0300)
  typedef signed char SQLSCHAR;
  typedef unsigned char SQLDATE;
  typedef unsigned char SQLDECIMAL;
  typedef double SQLDOUBLE;
  typedef double SQLFLOAT;
#endif
  typedef long SQLINTEGER;
  typedef unsigned long SQLUINTEGER;

#ifdef _WIN64
  typedef INT64 SQLLEN;
  typedef UINT64 SQLULEN;
  typedef UINT64 SQLSETPOSIROW;
#else
#define SQLLEN SQLINTEGER
#define SQLULEN SQLUINTEGER
#define SQLSETPOSIROW SQLUSMALLINT
#endif

  typedef SQLULEN SQLROWCOUNT;
  typedef SQLULEN SQLROWSETSIZE;
  typedef SQLULEN SQLTRANSID;
  typedef SQLLEN SQLROWOFFSET;

#if (ODBCVER >= 0x0300)
  typedef unsigned char SQLNUMERIC;
#endif
  typedef void *SQLPOINTER;
#if (ODBCVER >= 0x0300)
  typedef float SQLREAL;
#endif
  typedef short SQLSMALLINT;
  typedef unsigned short SQLUSMALLINT;
#if (ODBCVER >= 0x0300)
  typedef unsigned char SQLTIME;
  typedef unsigned char SQLTIMESTAMP;
  typedef unsigned char SQLVARCHAR;
#endif

  typedef SQLSMALLINT SQLRETURN;

#if (ODBCVER >= 0x0300)
  typedef void *SQLHANDLE;
  typedef SQLHANDLE SQLHENV;
  typedef SQLHANDLE SQLHDBC;
  typedef SQLHANDLE SQLHSTMT;
  typedef SQLHANDLE SQLHDESC;
#else
  typedef void *SQLHENV;
  typedef void *SQLHDBC;
  typedef void *SQLHSTMT;
#endif

#ifndef BASETYPES
#define BASETYPES
  typedef unsigned long ULONG;
  typedef ULONG *PULONG;
  typedef unsigned short USHORT;
  typedef USHORT *PUSHORT;
  typedef unsigned char UCHAR;
  typedef UCHAR *PUCHAR;
  typedef char *PSZ;
#endif

  typedef signed char SCHAR;
#if (ODBCVER < 0x0300)
  typedef SCHAR SQLSCHAR;
#endif
  typedef long int SDWORD;
  typedef short int SWORD;
  typedef unsigned long int UDWORD;
  typedef unsigned short int UWORD;

  typedef signed long SLONG;
  typedef signed short SSHORT;
  typedef double SDOUBLE;
  typedef double LDOUBLE;
  typedef float SFLOAT;
  typedef void *PTR;
  typedef void *HENV;
  typedef void *HDBC;
  typedef void *HSTMT;
  typedef signed short RETCODE;
  typedef HWND SQLHWND;

#ifndef __SQLDATE
#define __SQLDATE

  typedef struct tagDATE_STRUCT {
    SQLSMALLINT year;
    SQLUSMALLINT month;
    SQLUSMALLINT day;
  } DATE_STRUCT;

#if (ODBCVER >= 0x0300)
  typedef DATE_STRUCT SQL_DATE_STRUCT;
#endif

  typedef struct tagTIME_STRUCT {
    SQLUSMALLINT hour;
    SQLUSMALLINT minute;
    SQLUSMALLINT second;
  } TIME_STRUCT;

#if (ODBCVER >= 0x0300)
  typedef TIME_STRUCT SQL_TIME_STRUCT;
#endif

  typedef struct tagTIMESTAMP_STRUCT {
    SQLSMALLINT year;
    SQLUSMALLINT month;
    SQLUSMALLINT day;
    SQLUSMALLINT hour;
    SQLUSMALLINT minute;
    SQLUSMALLINT second;
    SQLUINTEGER fraction;
  } TIMESTAMP_STRUCT;

#if (ODBCVER >= 0x0300)
  typedef TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT;
#endif

#if (ODBCVER >= 0x0300)
  typedef enum {
    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,
    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,
    SQL_IS_MINUTE_TO_SECOND = 13
  } SQLINTERVAL;
#endif

#if (ODBCVER >= 0x0300)
  typedef struct tagSQL_YEAR_MONTH {
    SQLUINTEGER year;
    SQLUINTEGER month;
  } SQL_YEAR_MONTH_STRUCT;

  typedef struct tagSQL_DAY_SECOND {
    SQLUINTEGER day;
    SQLUINTEGER hour;
    SQLUINTEGER minute;
    SQLUINTEGER second;
    SQLUINTEGER fraction;
  } SQL_DAY_SECOND_STRUCT;

  typedef struct tagSQL_INTERVAL_STRUCT {
    SQLINTERVAL interval_type;
    SQLSMALLINT interval_sign;
    union {
      SQL_YEAR_MONTH_STRUCT year_month;
      SQL_DAY_SECOND_STRUCT day_second;
    } intval;
  } SQL_INTERVAL_STRUCT;
#endif
#endif

#if (ODBCVER >= 0x0300)
#define ODBCINT64 /* __MINGW_EXTENSION */ __int64
  __MINGW_EXTENSION typedef ODBCINT64 SQLBIGINT;
  __MINGW_EXTENSION typedef unsigned ODBCINT64 SQLUBIGINT;
#endif

#if (ODBCVER >= 0x0300)
#define SQL_MAX_NUMERIC_LEN 16
  typedef struct tagSQL_NUMERIC_STRUCT {
    SQLCHAR precision;
    SQLSCHAR scale;
    SQLCHAR sign;
    SQLCHAR val[SQL_MAX_NUMERIC_LEN];
  } SQL_NUMERIC_STRUCT;
#endif

#if (ODBCVER >= 0x0350)
#ifdef GUID_DEFINED
  typedef GUID SQLGUID;
#else

  typedef struct tagSQLGUID {
    DWORD Data1;
    WORD Data2;
    WORD Data3;
    BYTE Data4[8 ];
  } SQLGUID;
#endif
#endif

  typedef SQLULEN BOOKMARK;

#ifdef _WCHAR_T_DEFINED
  typedef wchar_t SQLWCHAR;
#else
  typedef unsigned short SQLWCHAR;
#endif

#if defined(UNICODE)
  typedef SQLWCHAR SQLTCHAR;
#else
  typedef SQLCHAR SQLTCHAR;
#endif
#endif

#ifdef __cplusplus
}
#endif
#endif
