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;