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