home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 May / PCP163A.iso / Runimage / Cbuilder4 / Include / SQLTYPES.H < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-26  |  6.5 KB  |  269 lines

  1. /*********************************************************************
  2. ** SQLTYPES.H - This file defines the types used in ODBC
  3. **
  4. ** (C) Copyright 1995-1996 By Microsoft Corp.
  5. **
  6. **        Created 04/10/95 for 2.50 specification
  7. **        Updated 12/11/95 for 3.00 specification
  8. *********************************************************************/
  9.  
  10. #ifndef __SQLTYPES
  11. #pragma option push -b -a8 -pc -A- /*P_O_Push_S*/
  12. #define __SQLTYPES
  13.  
  14. #include <wchar.h>
  15.  
  16. /* if ODBCVER is not defined, assume version 3.00 */
  17. #ifndef ODBCVER
  18. #define ODBCVER    0x0300
  19. #endif  /* ODBCVER */
  20.  
  21. #ifdef __cplusplus
  22. extern "C" {             /* Assume C declarations for C++   */
  23. #endif  /* __cplusplus */
  24.  
  25. /* environment specific definitions */
  26. #ifndef EXPORT
  27. #define EXPORT   
  28. #endif
  29.  
  30. #ifdef WIN32
  31. #define SQL_API  __stdcall
  32. #else
  33. #define SQL_API
  34. #endif
  35.  
  36. #ifndef RC_INVOKED
  37.  
  38. /* API declaration data types */
  39. typedef unsigned char   SQLCHAR;
  40. #if (ODBCVER >= 0x0300)
  41. typedef signed char     SQLSCHAR;
  42. typedef unsigned char   SQLDATE;
  43. typedef unsigned char   SQLDECIMAL;
  44. typedef double          SQLDOUBLE;
  45. typedef double          SQLFLOAT;
  46. #endif
  47. typedef long            SQLINTEGER;
  48. typedef unsigned long   SQLUINTEGER;
  49. #if (ODBCVER >= 0x0300)
  50. typedef unsigned char   SQLNUMERIC;
  51. #endif
  52. typedef void *          SQLPOINTER;
  53. #if (ODBCVER >= 0x0300)
  54. typedef float           SQLREAL;
  55. #endif
  56. typedef short           SQLSMALLINT;
  57. typedef unsigned short  SQLUSMALLINT;
  58. #if (ODBCVER >= 0x0300)
  59. typedef unsigned char   SQLTIME;
  60. typedef unsigned char   SQLTIMESTAMP;
  61. typedef unsigned char   SQLVARCHAR;
  62. #endif
  63.  
  64. /* function return type */
  65. typedef SQLSMALLINT     SQLRETURN;
  66.  
  67. /* generic data structures */
  68. #if (ODBCVER >= 0x0300)
  69. #if defined(WIN32)
  70. typedef void*                    SQLHANDLE;
  71. #else
  72. typedef SQLINTEGER        SQLHANDLE;
  73. #endif    /* defined(WIN32) */
  74. typedef SQLHANDLE               SQLHENV;
  75. typedef SQLHANDLE               SQLHDBC;
  76. typedef SQLHANDLE               SQLHSTMT;
  77. typedef SQLHANDLE               SQLHDESC;
  78. #else
  79. #if defined(WIN32)
  80. typedef void*                    SQLHENV;
  81. typedef void*                    SQLHDBC;
  82. typedef void*                    SQLHSTMT;
  83. #else
  84. typedef SQLINTEGER              SQLHENV;
  85. typedef SQLINTEGER              SQLHDBC;
  86. typedef SQLINTEGER              SQLHSTMT;
  87. #endif  /* defined(WIN32) */
  88. #endif /* ODBCVER >= 0x0300 */
  89.  
  90. /* SQL portable types for C */
  91. typedef unsigned char           UCHAR;
  92. typedef signed char             SCHAR;
  93. typedef SCHAR                   SQLSCHAR;
  94. typedef long int                SDWORD;
  95. typedef short int               SWORD;
  96. typedef unsigned long int       UDWORD;
  97. typedef unsigned short int      UWORD;
  98. typedef UDWORD                  SQLUINTEGER;
  99.  
  100. typedef signed long             SLONG;
  101. typedef signed short            SSHORT;
  102. typedef unsigned long           ULONG;
  103. typedef unsigned short          USHORT;
  104. typedef double                  SDOUBLE;
  105. typedef double                    LDOUBLE; 
  106. typedef float                   SFLOAT;
  107.  
  108. typedef void*                      PTR;
  109.  
  110. typedef void*                      HENV;
  111. typedef void*                      HDBC;
  112. typedef void*                      HSTMT;
  113.  
  114. typedef signed short            RETCODE;
  115.  
  116. #if defined(WIN32) || defined(OS2)
  117. typedef HWND                    SQLHWND;
  118. #elif defined (UNIX)
  119. typedef Widget                  SQLHWND;
  120. #else
  121. /* placehold for future O/S GUI window handle definition */
  122. typedef SQLPOINTER              SQLHWND;
  123. #endif
  124.  
  125. #ifndef    __SQLDATE
  126. #define    __SQLDATE
  127. /* transfer types for DATE, TIME, TIMESTAMP */
  128. typedef struct tagDATE_STRUCT
  129. {
  130.         SQLSMALLINT    year;
  131.         SQLUSMALLINT   month;
  132.         SQLUSMALLINT   day;
  133. } DATE_STRUCT;
  134.  
  135. #if (ODBCVER >= 0x0300)
  136. typedef DATE_STRUCT    SQL_DATE_STRUCT;
  137. #endif  /* ODBCVER >= 0x0300 */
  138.  
  139. typedef struct tagTIME_STRUCT
  140. {
  141.         SQLUSMALLINT   hour;
  142.         SQLUSMALLINT   minute;
  143.         SQLUSMALLINT   second;
  144. } TIME_STRUCT;
  145.  
  146. #if (ODBCVER >= 0x0300)
  147. typedef TIME_STRUCT    SQL_TIME_STRUCT;
  148. #endif /* ODBCVER >= 0x0300 */
  149.  
  150. typedef struct tagTIMESTAMP_STRUCT
  151. {
  152.         SQLSMALLINT    year;
  153.         SQLUSMALLINT   month;
  154.         SQLUSMALLINT   day;
  155.         SQLUSMALLINT   hour;
  156.         SQLUSMALLINT   minute;
  157.         SQLUSMALLINT   second;
  158.         SQLUINTEGER    fraction;
  159. } TIMESTAMP_STRUCT;
  160.  
  161. #if (ODBCVER >= 0x0300)
  162. typedef TIMESTAMP_STRUCT    SQL_TIMESTAMP_STRUCT;
  163. #endif  /* ODBCVER >= 0x0300 */
  164.  
  165.  
  166. /*
  167.  * enumerations for DATETIME_INTERVAL_SUBCODE values for interval data types
  168.  * these values are from SQL-92
  169.  */
  170.  
  171. #if (ODBCVER >= 0x0300)
  172. typedef enum 
  173. {
  174.     SQL_IS_YEAR                        = 1,
  175.     SQL_IS_MONTH                    = 2,
  176.     SQL_IS_DAY                        = 3,
  177.     SQL_IS_HOUR                        = 4,
  178.     SQL_IS_MINUTE                    = 5,
  179.     SQL_IS_SECOND                    = 6,
  180.     SQL_IS_YEAR_TO_MONTH            = 7,
  181.     SQL_IS_DAY_TO_HOUR                = 8,
  182.     SQL_IS_DAY_TO_MINUTE            = 9,
  183.     SQL_IS_DAY_TO_SECOND            = 10,
  184.     SQL_IS_HOUR_TO_MINUTE            = 11,
  185.     SQL_IS_HOUR_TO_SECOND            = 12,
  186.     SQL_IS_MINUTE_TO_SECOND            = 13
  187. } SQLINTERVAL;
  188.  
  189. #endif  /* ODBCVER >= 0x0300 */
  190.  
  191. #if (ODBCVER >= 0x0300)
  192. typedef struct tagSQL_YEAR_MONTH
  193. {
  194.         SQLUINTEGER        year;
  195.         SQLUINTEGER        month;
  196. } SQL_YEAR_MONTH_STRUCT;
  197.  
  198. typedef struct tagSQL_DAY_SECOND
  199. {
  200.         SQLUINTEGER        day;
  201.         SQLUINTEGER        hour;
  202.         SQLUINTEGER        minute;
  203.         SQLUINTEGER        second;
  204.         SQLUINTEGER        fraction;
  205. } SQL_DAY_SECOND_STRUCT;
  206.  
  207. typedef struct tagSQL_INTERVAL_STRUCT
  208. {
  209.     SQLINTERVAL        interval_type;
  210.     SQLSMALLINT        interval_sign;
  211.     union {
  212.         SQL_YEAR_MONTH_STRUCT        year_month;
  213.         SQL_DAY_SECOND_STRUCT        day_second;
  214.     } intval;
  215.  
  216. } SQL_INTERVAL_STRUCT;
  217.  
  218. #endif  /* ODBCVER >= 0x0300 */
  219.  
  220. #endif    /* __SQLDATE    */
  221.  
  222. /* the ODBC C types for SQL_C_SBIGINT and SQL_C_UBIGINT */
  223. #if (ODBCVER >= 0x0300)
  224. #if (_MSC_VER >= 900)
  225. #define ODBCINT64    __int64
  226. #endif  
  227.  
  228. /* If using other compilers, define ODBCINT64 to the 
  229.     approriate 64 bit integer type */
  230. #ifdef ODBCINT64
  231. typedef ODBCINT64    SQLBIGINT;
  232. typedef unsigned ODBCINT64    SQLUBIGINT;
  233. #endif
  234. #endif  /* ODBCVER >= 0x0300 */
  235.  
  236. /* internal representation of numeric data type */
  237. #if (ODBCVER >= 0x0300)
  238. #define SQL_MAX_NUMERIC_LEN        16
  239. typedef struct tagSQL_NUMERIC_STRUCT
  240. {
  241.     SQLCHAR        precision;
  242.     SQLSCHAR    scale;
  243.     SQLCHAR        sign;    /* 1 if positive, 0 if negative */
  244.     SQLCHAR        val[SQL_MAX_NUMERIC_LEN];
  245. } SQL_NUMERIC_STRUCT;
  246. #endif  /* ODBCVER >= 0x0300 */
  247.  
  248. typedef unsigned long int       BOOKMARK;
  249.  
  250. typedef wchar_t SQLWCHAR;
  251.  
  252. #ifdef UNICODE
  253. typedef SQLWCHAR        SQLTCHAR;
  254. #else
  255. typedef SQLCHAR         SQLTCHAR;
  256. #endif  /* UNICODE */
  257.  
  258.  
  259.  
  260. #endif     /* RC_INVOKED */
  261.  
  262.  
  263. #ifdef __cplusplus
  264. }                                    /* End of extern "C" { */
  265. #endif  /* __cplusplus */
  266.  
  267. #pragma option pop /*P_O_Pop*/
  268. #endif /* #ifndef __SQLTYPES */
  269.