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