Skip to content

Commit cd0d9a8

Browse files
committed
Add the ODBC 4.0 modules based on ImportC and deprecate the old ODBC 3.5 modules.
1 parent 40daf61 commit cd0d9a8

File tree

7 files changed

+2076
-0
lines changed

7 files changed

+2076
-0
lines changed

etc/c/odbc/odbc32.d

Lines changed: 959 additions & 0 deletions
Large diffs are not rendered by default.

etc/c/odbc/odbc64.d

Lines changed: 962 additions & 0 deletions
Large diffs are not rendered by default.

etc/c/odbc/package.d

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
/**
2+
* ODBC Header Module
3+
*
4+
* ImportC translation from the $(LINK2 https://github.com/microsoft/ODBC-Specification,
5+
ODBC 4.0 Specification) Headers.
6+
*
7+
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8+
* Source: $(PHOBOSSRC etc/c/odbc/_package.d)
9+
10+
Declarations for interfacing with the ODBC library.
11+
12+
The prior version of the ODBC bindings has been deprecated and will be removed in a future release.
13+
14+
See_Also: $(LINK2 https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/odbc-api-reference,
15+
ODBC API Reference on MSDN)
16+
*/
17+
18+
module etc.c.odbc;
19+
20+
//64-bit architectures
21+
version(X86_64) {
22+
public import etc.c.odbc.odbc64;
23+
}
24+
version(AArch64) {
25+
public import etc.c.odbc.odbc64;
26+
}
27+
version(PPC64) {
28+
public import etc.c.odbc.odbc64;
29+
}
30+
version(MIPS64) {
31+
public import etc.c.odbc.odbc64;
32+
}
33+
version(RISCV64) {
34+
public import etc.c.odbc.odbc64;
35+
}
36+
version(SPARC64) {
37+
public import etc.c.odbc.odbc64;
38+
}
39+
version(HPPA64) {
40+
public import etc.c.odbc.odbc64;
41+
}
42+
version(IA64) {
43+
public import etc.c.odbc.odbc64;
44+
}
45+
46+
//32-bit architectures
47+
version(X86) {
48+
public import etc.c.odbc.odbc32;
49+
}
50+
version(ARM) {
51+
public import etc.c.odbc.odbc32;
52+
}
53+
version(PPC32) {
54+
public import etc.c.odbc.odbc32;
55+
}
56+
version(MIPS32) {
57+
public import etc.c.odbc.odbc32;
58+
}
59+
version(RISCV32) {
60+
public import etc.c.odbc.odbc32;
61+
}
62+
version(SPARC) {
63+
public import etc.c.odbc.odbc32;
64+
}
65+
version(HPPA) {
66+
public import etc.c.odbc.odbc32;
67+
}
68+
69+
// Manually converted enums
70+
public enum int ODBCVER = 0x0400;
71+
public enum int SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT |
72+
SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG;
73+
public enum string SQL_ALL_CATALOGS = "%";
74+
public enum string SQL_ALL_SCHEMAS = "%";
75+
public enum string SQL_ALL_TABLE_TYPES = "%";
76+
public enum string SQL_ODBC_KEYWORDS = "ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,
77+
ASC,ASSERTION,AT,AUTHORIZATION,AVG,
78+
BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,
79+
CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,
80+
COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,
81+
CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,
82+
CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,
83+
DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE,
84+
DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,
85+
DISTINCT,DOMAIN,DOUBLE,DROP,
86+
ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,
87+
EXISTS,EXTERNAL,EXTRACT,
88+
FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,
89+
GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,
90+
IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,
91+
INPUT,INSENSITIVE,INSERT,INT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,
92+
JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,
93+
MATCH,MAX,MIN,MINUTE,MODULE,MONTH,
94+
NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,
95+
OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,
96+
PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,
97+
PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,
98+
READ,REAL,REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWS,
99+
SCHEMA,SCROLL,SECOND,SECTION,SELECT,SESSION,SESSION_USER,SET,SIZE,
100+
SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,
101+
SUBSTRING,SUM,SYSTEM_USER,
102+
TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,
103+
TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,
104+
UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,
105+
VALUE,VALUES,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,WRITE,
106+
YEAR,ZONE";
107+
108+
// Manually converted macros
109+
public long SQL_LEN_DATA_AT_EXEC(long length)
110+
{
111+
return (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET);
112+
}
113+
114+
public long SQL_LEN_BINARY_ATTR(long length)
115+
{
116+
return (-(length)+SQL_LEN_BINARY_ATTR_OFFSET);
117+
}
118+
119+
public SQLRETURN SQL_POSITION_TO(SQLHSTMT hstmt, SQLSETPOSIROW irow)
120+
{
121+
return SQLSetPos(hstmt,irow,SQL_POSITION,SQL_LOCK_NO_CHANGE);
122+
}
123+
124+
public SQLRETURN SQL_LOCK_RECORD(SQLHSTMT hstmt, SQLSETPOSIROW irow, SQLUSMALLINT fLock)
125+
{
126+
return SQLSetPos(hstmt,irow,SQL_POSITION,fLock);
127+
}
128+
129+
public SQLRETURN SQL_REFRESH_RECORD(SQLHSTMT hstmt, SQLSETPOSIROW irow, SQLUSMALLINT fLock)
130+
{
131+
return SQLSetPos(hstmt,irow,SQL_REFRESH,fLock);
132+
}
133+
134+
public SQLRETURN SQL_UPDATE_RECORD(SQLHSTMT hstmt, SQLSETPOSIROW irow)
135+
{
136+
return SQLSetPos(hstmt,irow,SQL_UPDATE,SQL_LOCK_NO_CHANGE);
137+
}
138+
139+
public SQLRETURN SQL_DELETE_RECORD(SQLHSTMT hstmt, SQLSETPOSIROW irow)
140+
{
141+
return SQLSetPos(hstmt,irow,SQL_DELETE,SQL_LOCK_NO_CHANGE);
142+
}
143+
144+
public SQLRETURN SQL_ADD_RECORD(SQLHSTMT hstmt, SQLSETPOSIROW irow)
145+
{
146+
return SQLSetPos(hstmt,irow,SQL_ADD,SQL_LOCK_NO_CHANGE);
147+
}

etc/c/odbc/sql.d

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ See_Also: $(LINK2 https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/odb
1212
ODBC API Reference on MSDN)
1313
*/
1414
module etc.c.odbc.sql;
15+
deprecated("The ODBC 3.5 modules are deprecated. Please use the ODBC4 module in the etc.c.odbc package");
16+
deprecated:
1517

1618
public import etc.c.odbc.sqltypes;
1719

etc/c/odbc/sqlext.d

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ See_Also: $(LINK2 https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/odb
1010
ODBC API Reference on MSDN)
1111
*/
1212
module etc.c.odbc.sqlext;
13+
deprecated("The ODBC 3.5 modules are deprecated. Please use the ODBC4 module in the etc.c.odbc package");
14+
deprecated:
1315

1416
/* Conversion notes:
1517
The MinGW file was a horrible mess. All of the #defines were sorted alphabetically,

etc/c/odbc/sqltypes.d

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ See_Also: $(LINK2 https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/odb
1212
ODBC API Reference on MSDN)
1313
*/
1414
module etc.c.odbc.sqltypes;
15+
deprecated("The ODBC 3.5 modules are deprecated. Please use the ODBC4 module in the etc.c.odbc package");
16+
deprecated:
1517

1618
version (ANSI) {} else version = Unicode;
1719

etc/c/odbc/sqlucode.d

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ See_Also: $(LINK2 https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/odb
1212
ODBC API Reference on MSDN)
1313
*/
1414
module etc.c.odbc.sqlucode;
15+
deprecated("The ODBC 3.5 modules are deprecated. Please use the ODBC4 module in the etc.c.odbc package");
16+
deprecated:
1517

1618
version (ANSI) {} else version = Unicode;
1719

0 commit comments

Comments
 (0)