1 /** 2 $(RED Warning: 3 This binding is out-of-date and does not allow use on non-Windows platforms. Use `etc.c.odbc.sqltypes` instead.) 4 5 * Windows API header module 6 * 7 * Translated from MinGW Windows headers 8 * 9 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 10 * Source: $(DRUNTIMESRC core/sys/windows/_sqltypes.d) 11 */ 12 13 module nulib.system.win32.sqltypes; 14 15 16 version (ANSI) {} else version = Unicode; 17 18 /* Conversion notes: 19 It's assumed that ODBC >= 0x0300. 20 */ 21 22 import nulib.system.win32.windef; 23 import nulib.system.win32.basetyps; // for GUID 24 25 alias byte SCHAR, SQLSCHAR; 26 alias int SDWORD, SLONG, SQLINTEGER; 27 alias short SWORD, SSHORT, RETCODE, SQLSMALLINT; 28 alias UDWORD = ULONG; 29 alias USHORT UWORD, SQLUSMALLINT; 30 alias double SDOUBLE, LDOUBLE; 31 alias SFLOAT = float; 32 alias PVOID PTR, HENV, HDBC, HSTMT, SQLPOINTER; 33 alias SQLCHAR = UCHAR; 34 // #ifndef _WIN64 35 alias SQLUINTEGER = UDWORD; 36 // #endif 37 38 //static if (ODBCVER >= 0x0300) { 39 alias SQLHANDLE = HANDLE; 40 alias SQLHANDLE SQLHENV, SQLHDBC, SQLHSTMT, SQLHDESC; 41 /* 42 } else { 43 alias SQLHENV = void*; 44 alias SQLHDBC = void*; 45 alias SQLHSTMT = void*; 46 } 47 */ 48 alias SQLRETURN = SQLSMALLINT; 49 alias SQLHWND = HWND; 50 alias BOOKMARK = ULONG; 51 52 alias SQLINTEGER SQLLEN, SQLROWOFFSET; 53 alias SQLUINTEGER SQLROWCOUNT, SQLULEN; 54 alias SQLTRANSID = DWORD; 55 alias SQLSETPOSIROW = SQLUSMALLINT; 56 alias SQLWCHAR = wchar; 57 58 version (Unicode) { 59 alias SQLTCHAR = SQLWCHAR; 60 } else { 61 alias SQLCHAR SQLTCHAR; 62 } 63 //static if (ODBCVER >= 0x0300) { 64 alias ubyte SQLDATE, SQLDECIMAL; 65 alias double SQLDOUBLE, SQLFLOAT; 66 alias ubyte SQLNUMERIC; 67 alias float SQLREAL; 68 alias ubyte SQLTIME, SQLTIMESTAMP, SQLVARCHAR; 69 alias long ODBCINT64, SQLBIGINT; 70 alias ulong SQLUBIGINT; 71 //} 72 73 //Everything above this line may by used by odbcinst.d 74 //Everything below this line is deprecated 75 deprecated ("The ODBC 3.5 modules are deprecated. Please use the ODBC4 modules in the `etc.c.odbc` package."): 76 77 struct DATE_STRUCT { 78 SQLSMALLINT year; 79 SQLUSMALLINT month; 80 SQLUSMALLINT day; 81 } 82 83 struct TIME_STRUCT { 84 SQLUSMALLINT hour; 85 SQLUSMALLINT minute; 86 SQLUSMALLINT second; 87 } 88 89 struct TIMESTAMP_STRUCT { 90 SQLSMALLINT year; 91 SQLUSMALLINT month; 92 SQLUSMALLINT day; 93 SQLUSMALLINT hour; 94 SQLUSMALLINT minute; 95 SQLUSMALLINT second; 96 SQLUINTEGER fraction; 97 } 98 99 //static if (ODBCVER >= 0x0300) { 100 alias SQL_DATE_STRUCT = DATE_STRUCT; 101 alias SQL_TIME_STRUCT = TIME_STRUCT; 102 alias SQL_TIMESTAMP_STRUCT = TIMESTAMP_STRUCT; 103 104 enum SQLINTERVAL { 105 SQL_IS_YEAR = 1, 106 SQL_IS_MONTH, 107 SQL_IS_DAY, 108 SQL_IS_HOUR, 109 SQL_IS_MINUTE, 110 SQL_IS_SECOND, 111 SQL_IS_YEAR_TO_MONTH, 112 SQL_IS_DAY_TO_HOUR, 113 SQL_IS_DAY_TO_MINUTE, 114 SQL_IS_DAY_TO_SECOND, 115 SQL_IS_HOUR_TO_MINUTE, 116 SQL_IS_HOUR_TO_SECOND, 117 SQL_IS_MINUTE_TO_SECOND 118 } 119 120 struct SQL_YEAR_MONTH_STRUCT { 121 SQLUINTEGER year; 122 SQLUINTEGER month; 123 } 124 125 struct SQL_DAY_SECOND_STRUCT { 126 SQLUINTEGER day; 127 SQLUINTEGER hour; 128 SQLUINTEGER minute; 129 SQLUINTEGER second; 130 SQLUINTEGER fraction; 131 } 132 133 struct SQL_INTERVAL_STRUCT { 134 SQLINTERVAL interval_type; 135 SQLSMALLINT interval_sign; 136 union _intval { 137 SQL_YEAR_MONTH_STRUCT year_month; 138 SQL_DAY_SECOND_STRUCT day_second; 139 } 140 _intval intval; 141 } 142 143 enum SQL_MAX_NUMERIC_LEN = 16; 144 145 struct SQL_NUMERIC_STRUCT { 146 SQLCHAR precision; 147 SQLSCHAR scale; 148 SQLCHAR sign; 149 SQLCHAR[SQL_MAX_NUMERIC_LEN] val; 150 } 151 // } ODBCVER >= 0x0300 152 alias SQLGUID = GUID;