1 /***********************************************************************\ 2 * sqltypes.d * 3 * * 4 * Windows API header module * 5 * * 6 * Translated from MinGW Windows headers * 7 * * 8 * Placed into public domain * 9 \***********************************************************************/ 10 module win32.sqltypes; 11 version(Windows): 12 13 /* Conversion notes: 14 It's assumed that ODBC >= 0x0300. 15 */ 16 17 private import win32.windef; 18 private import win32.basetyps; // for GUID 19 20 alias byte SCHAR, SQLSCHAR; 21 alias int SDWORD, SLONG, SQLINTEGER; 22 alias short SWORD, SSHORT, RETCODE, SQLSMALLINT; 23 alias ULONG UDWORD; 24 alias USHORT UWORD, SQLUSMALLINT; 25 alias double SDOUBLE, LDOUBLE; 26 alias float SFLOAT; 27 alias PVOID PTR, HENV, HDBC, HSTMT, SQLPOINTER; 28 alias UCHAR SQLCHAR; 29 // #ifndef _WIN64 30 alias UDWORD SQLUINTEGER; 31 // #endif 32 33 //static if (ODBCVER >= 0x0300) { 34 alias TypeDef!(HANDLE) SQLHANDLE; 35 alias SQLHANDLE SQLHENV, SQLHDBC, SQLHSTMT, SQLHDESC; 36 /* 37 } else { 38 alias void* SQLHENV; 39 alias void* SQLHDBC; 40 alias void* SQLHSTMT; 41 } 42 */ 43 alias SQLSMALLINT SQLRETURN; 44 alias HWND SQLHWND; 45 alias ULONG BOOKMARK; 46 47 alias SQLINTEGER SQLLEN, SQLROWOFFSET; 48 alias SQLUINTEGER SQLROWCOUNT, SQLULEN; 49 alias DWORD SQLTRANSID; 50 alias SQLUSMALLINT SQLSETPOSIROW; 51 alias wchar SQLWCHAR; 52 53 version(Unicode) { 54 alias SQLWCHAR SQLTCHAR; 55 } else { 56 alias SQLCHAR SQLTCHAR; 57 } 58 //static if (ODBCVER >= 0x0300) { 59 alias ubyte SQLDATE, SQLDECIMAL; 60 alias double SQLDOUBLE, SQLFLOAT; 61 alias ubyte SQLNUMERIC; 62 alias float SQLREAL; 63 alias ubyte SQLTIME, SQLTIMESTAMP, SQLVARCHAR; 64 alias long ODBCINT64, SQLBIGINT; 65 alias ulong SQLUBIGINT; 66 //} 67 68 struct DATE_STRUCT { 69 SQLSMALLINT year; 70 SQLUSMALLINT month; 71 SQLUSMALLINT day; 72 } 73 74 struct TIME_STRUCT { 75 SQLUSMALLINT hour; 76 SQLUSMALLINT minute; 77 SQLUSMALLINT second; 78 } 79 80 struct TIMESTAMP_STRUCT { 81 SQLSMALLINT year; 82 SQLUSMALLINT month; 83 SQLUSMALLINT day; 84 SQLUSMALLINT hour; 85 SQLUSMALLINT minute; 86 SQLUSMALLINT second; 87 SQLUINTEGER fraction; 88 } 89 90 //static if (ODBCVER >= 0x0300) { 91 alias DATE_STRUCT SQL_DATE_STRUCT; 92 alias TIME_STRUCT SQL_TIME_STRUCT; 93 alias TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT; 94 95 enum SQLINTERVAL { 96 SQL_IS_YEAR = 1, 97 SQL_IS_MONTH, 98 SQL_IS_DAY, 99 SQL_IS_HOUR, 100 SQL_IS_MINUTE, 101 SQL_IS_SECOND, 102 SQL_IS_YEAR_TO_MONTH, 103 SQL_IS_DAY_TO_HOUR, 104 SQL_IS_DAY_TO_MINUTE, 105 SQL_IS_DAY_TO_SECOND, 106 SQL_IS_HOUR_TO_MINUTE, 107 SQL_IS_HOUR_TO_SECOND, 108 SQL_IS_MINUTE_TO_SECOND 109 } 110 111 struct SQL_YEAR_MONTH_STRUCT { 112 SQLUINTEGER year; 113 SQLUINTEGER month; 114 } 115 116 struct SQL_DAY_SECOND_STRUCT { 117 SQLUINTEGER day; 118 SQLUINTEGER hour; 119 SQLUINTEGER minute; 120 SQLUINTEGER second; 121 SQLUINTEGER fraction; 122 } 123 124 struct SQL_INTERVAL_STRUCT { 125 SQLINTERVAL interval_type; 126 SQLSMALLINT interval_sign; 127 union _intval { 128 SQL_YEAR_MONTH_STRUCT year_month; 129 SQL_DAY_SECOND_STRUCT day_second; 130 } 131 _intval intval; 132 } 133 134 const SQL_MAX_NUMERIC_LEN = 16; 135 136 struct SQL_NUMERIC_STRUCT { 137 SQLCHAR precision; 138 SQLSCHAR scale; 139 SQLCHAR sign; 140 SQLCHAR[SQL_MAX_NUMERIC_LEN] val; 141 } 142 // } ODBCVER >= 0x0300 143 alias GUID SQLGUID;