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