1 /** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 7 * Source: $(PHOBOSSRC etc/c/odbc/_sqltypes.d) 8 9 Declarations for interfacing with the ODBC library. 10 11 See_Also: $(LINK2 https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/odbc-api-reference, 12 ODBC API Reference on MSDN) 13 */ 14 deprecated ("The ODBC 3.5 modules are deprecated. Please use the ODBC4 modules in the `etc.c.odbc` package.") 15 module etc.c.odbc.sqltypes; 16 17 version (ANSI) {} else version = Unicode; 18 19 /* Conversion notes: 20 It's assumed that ODBC >= 0x0300. 21 */ 22 23 // Import windows types or declare appropriate aliases if we are not. 24 version (Windows) 25 { 26 public import core.sys.windows.windef; 27 public import core.sys.windows.basetyps; // for GUID 28 } 29 else 30 { 31 alias ushort USHORT, WORD; 32 alias uint ULONG, LONG, BOOL, DWORD; 33 alias void VOID; 34 alias void* PVOID, HANDLE, HWND; 35 alias ubyte UCHAR, BYTE; 36 alias wchar* LPWSTR; 37 38 align(1) struct GUID { // size is 16 39 align(1): 40 DWORD Data1; 41 WORD Data2; 42 WORD Data3; 43 BYTE[8] Data4; 44 } 45 } 46 alias GUID SQLGUID; 47 48 alias byte SCHAR, SQLSCHAR; 49 alias int SDWORD, SLONG, SQLINTEGER; 50 alias short SWORD, SSHORT, RETCODE, SQLSMALLINT; 51 alias ULONG UDWORD; 52 alias USHORT UWORD, SQLUSMALLINT; 53 alias double SDOUBLE, LDOUBLE; 54 alias float SFLOAT; 55 alias PVOID PTR, HENV, HDBC, HSTMT, SQLPOINTER; 56 alias UCHAR SQLCHAR; 57 // #ifndef _WIN64 58 alias UDWORD SQLUINTEGER; 59 // #endif 60 61 //static if (ODBCVER >= 0x0300) 62 //{ 63 alias HANDLE SQLHANDLE; 64 alias SQLHANDLE SQLHENV, SQLHDBC, SQLHSTMT, SQLHDESC; 65 /* 66 } 67 else 68 { 69 alias void* SQLHENV; 70 alias void* SQLHDBC; 71 alias void* SQLHSTMT; 72 } 73 */ 74 alias SQLSMALLINT SQLRETURN; 75 alias HWND SQLHWND; 76 alias ULONG BOOKMARK; 77 78 alias SQLINTEGER SQLLEN, SQLROWOFFSET; 79 alias SQLUINTEGER SQLROWCOUNT, SQLULEN; 80 alias DWORD SQLTRANSID; 81 alias SQLUSMALLINT SQLSETPOSIROW; 82 alias wchar SQLWCHAR; 83 84 version (Unicode) 85 { 86 alias SQLWCHAR SQLTCHAR; 87 } 88 else 89 { 90 alias SQLCHAR SQLTCHAR; 91 } 92 //static if (ODBCVER >= 0x0300) 93 //{ 94 alias ubyte SQLDATE, SQLDECIMAL; 95 alias double SQLDOUBLE, SQLFLOAT; 96 alias ubyte SQLNUMERIC; 97 alias float SQLREAL; 98 alias ubyte SQLTIME, SQLTIMESTAMP, SQLVARCHAR; 99 alias long ODBCINT64, SQLBIGINT; 100 alias ulong SQLUBIGINT; 101 //} 102 103 struct DATE_STRUCT { 104 SQLSMALLINT year; 105 SQLUSMALLINT month; 106 SQLUSMALLINT day; 107 } 108 109 struct TIME_STRUCT { 110 SQLUSMALLINT hour; 111 SQLUSMALLINT minute; 112 SQLUSMALLINT second; 113 } 114 115 struct TIMESTAMP_STRUCT { 116 SQLSMALLINT year; 117 SQLUSMALLINT month; 118 SQLUSMALLINT day; 119 SQLUSMALLINT hour; 120 SQLUSMALLINT minute; 121 SQLUSMALLINT second; 122 SQLUINTEGER fraction; 123 } 124 125 //static if (ODBCVER >= 0x0300) 126 //{ 127 alias DATE_STRUCT SQL_DATE_STRUCT; 128 alias TIME_STRUCT SQL_TIME_STRUCT; 129 alias TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT; 130 131 enum SQLINTERVAL { 132 SQL_IS_YEAR = 1, 133 SQL_IS_MONTH, 134 SQL_IS_DAY, 135 SQL_IS_HOUR, 136 SQL_IS_MINUTE, 137 SQL_IS_SECOND, 138 SQL_IS_YEAR_TO_MONTH, 139 SQL_IS_DAY_TO_HOUR, 140 SQL_IS_DAY_TO_MINUTE, 141 SQL_IS_DAY_TO_SECOND, 142 SQL_IS_HOUR_TO_MINUTE, 143 SQL_IS_HOUR_TO_SECOND, 144 SQL_IS_MINUTE_TO_SECOND 145 } 146 147 struct SQL_YEAR_MONTH_STRUCT { 148 SQLUINTEGER year; 149 SQLUINTEGER month; 150 } 151 152 struct SQL_DAY_SECOND_STRUCT { 153 SQLUINTEGER day; 154 SQLUINTEGER hour; 155 SQLUINTEGER minute; 156 SQLUINTEGER second; 157 SQLUINTEGER fraction; 158 } 159 160 struct SQL_INTERVAL_STRUCT { 161 SQLINTERVAL interval_type; 162 SQLSMALLINT interval_sign; 163 union _intval { 164 SQL_YEAR_MONTH_STRUCT year_month; 165 SQL_DAY_SECOND_STRUCT day_second; 166 } 167 _intval intval; 168 } 169 170 enum SQL_MAX_NUMERIC_LEN = 16; 171 172 struct SQL_NUMERIC_STRUCT { 173 SQLCHAR precision; 174 SQLSCHAR scale; 175 SQLCHAR sign; 176 SQLCHAR[SQL_MAX_NUMERIC_LEN] val; 177 } 178 // } ODBCVER >= 0x0300