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