Add etc.c.odbc

This commit is contained in:
Andrei Alexandrescu 2015-06-09 18:21:50 -07:00
parent f94199734c
commit e37343ba49
5 changed files with 4234 additions and 3 deletions

1414
etc/c/odbc/sql.d Executable file

File diff suppressed because it is too large Load diff

2161
etc/c/odbc/sqlext.d Executable file

File diff suppressed because it is too large Load diff

184
etc/c/odbc/sqltypes.d Executable file
View file

@ -0,0 +1,184 @@
/**
Declarations for interfacing with the ODBC library.
Adapted with minimal changes from the work of David L. Davis
(refer to the $(WEB
forum.dlang.org/thread/cfk7ql$(DOLLAR)1p4n$(DOLLAR)1@digitaldaemon.com#post-cfk7ql:241p4n:241:40digitaldaemon.com,
original announcement)).
`etc.c.odbc.sqlext.d` corresponds to the `sqlext.h` C header file.
See_Also: $(LUCKY ODBC API Reference on MSN Online)
*/
module etc.c.odbc.sqltypes;
extern (Windows):
// * API declaration data types *
//alias void *HANDLE;
//alias ubyte SQLCHAR;
alias char SQLCHAR;
alias byte SQLSCHAR;
alias ubyte SQLDATE;
alias ubyte SQLDECIMAL;
alias double SQLDOUBLE;
alias double SQLFLOAT;
alias int SQLINTEGER;
alias ushort SQLUINTEGER;
alias ubyte SQLNUMERIC;
alias float SQLREAL;
alias ubyte SQLTIME;
alias ubyte SQLTIMESTAMP;
alias ubyte SQLVARCHAR;
alias void * SQLPOINTER;
alias short SQLSMALLINT;
alias ushort SQLUSMALLINT;
// * function return type *
alias SQLSMALLINT SQLRETURN;
// * generic data structures *
alias void * SQLHANDLE;
alias SQLHANDLE SQLHENV;
alias SQLHANDLE SQLHDBC;
alias SQLHANDLE SQLHSTMT;
alias SQLHANDLE SQLHDESC;
// * SQL portable types for C *
//alias ubyte UCHAR; // std.c.windows.windows has this alias
//alias char UCHAR;
alias byte SCHAR;
//alias SCHAR SQLSCHAR;
alias uint DWORD;
alias int SDWORD;
alias short SWORD;
alias uint UDWORD;
alias ushort UWORD;
alias short WORD;
//alias UDWORD SQLUINTEGER;
alias long SLONG;
alias short SSHORT;
alias ulong ULONG;
alias ushort USHORT;
alias double SDOUBLE;
alias double LDOUBLE;
alias float SFLOAT;
alias void* PTR;
alias void* HENV;
alias void* HDBC;
alias void* HSTMT;
alias short RETCODE;
alias SQLPOINTER HWND;
alias HWND SQLHWND;
// * transfer types for DATE, TIME, TIMESTAMP *
struct DATE_STRUCT
{
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
};
alias DATE_STRUCT SQL_DATE_STRUCT;
struct TIME_STRUCT
{
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
};
alias TIME_STRUCT SQL_TIME_STRUCT;
struct TIMESTAMP_STRUCT
{
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
SQLUINTEGER fraction;
};
alias TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT;
/+
' enumerations for DATETIME_INTERVAL_SUBCODE values for interval data types
' these values are from SQL-92
+/
enum SQLINTERVAL
{
SQL_IS_YEAR = 1,
SQL_IS_MONTH = 2,
SQL_IS_DAY = 3,
SQL_IS_HOUR = 4,
SQL_IS_MINUTE = 5,
SQL_IS_SECOND = 6,
SQL_IS_YEAR_TO_MONTH = 7,
SQL_IS_DAY_TO_HOUR = 8,
SQL_IS_DAY_TO_MINUTE = 9,
SQL_IS_DAY_TO_SECOND = 10,
SQL_IS_HOUR_TO_MINUTE = 11,
SQL_IS_HOUR_TO_SECOND = 12,
SQL_IS_MINUTE_TO_SECOND = 13
}
struct SQL_YEAR_MONTH_STRUCT
{
SQLUINTEGER year;
SQLUINTEGER month;
};
struct SQL_DAY_SECOND_STRUCT
{
SQLUINTEGER day;
SQLUINTEGER hour;
SQLUINTEGER minute;
SQLUINTEGER second;
SQLUINTEGER fraction;
};
struct SQL_INTERVAL_STRUCT
{
SQLINTERVAL interval_type;
SQLSMALLINT interval_sign;
union intval {
SQL_YEAR_MONTH_STRUCT year_month;
SQL_DAY_SECOND_STRUCT day_second;
};
};
// * internal representation of numeric data type *
const int SQL_MAX_NUMERIC_LEN = 16;
struct SQL_NUMERIC_STRUCT
{
SQLCHAR precision;
SQLSCHAR scale;
SQLCHAR sign; /* 1 if positive, 0 if negative */
SQLCHAR[ SQL_MAX_NUMERIC_LEN ] val;
};
/* size is 16 */
struct SQLGUID
{
DWORD Data1;
WORD Data2;
WORD Data3;
ubyte[ 8 ] Data4;
};
alias SQLGUID GUID;
alias uint BOOKMARK;
alias ushort SQLWCHAR;
version( UNICODE )
{
alias SQLWCHAR SQLTCHAR;
}
else
{
alias SQLCHAR SQLTCHAR;
} // end version( UNICODE )

472
etc/c/odbc/sqlucode.d Executable file
View file

@ -0,0 +1,472 @@
/**
Declarations for interfacing with the ODBC library.
Adapted with minimal changes from the work of David L. Davis
(refer to the $(WEB
forum.dlang.org/thread/cfk7ql$(DOLLAR)1p4n$(DOLLAR)1@digitaldaemon.com#post-cfk7ql:241p4n:241:40digitaldaemon.com,
original announcement)).
`etc.c.odbc.sqlucode` corresponds to the `sqlucode.h` C include file.
See_Also: $(LUCKY ODBC API Reference on MSN Online)
*/
/+
sqlucode.d - This is the the unicode include for ODBC v3.0+ Core functions.
+/
module etc.c.odbc.sqlucode;
import etc.c.odbc.sqlext;
import etc.c.odbc.sqltypes;
extern (Windows):
enum
{
SQL_WCHAR = (-8),
SQL_WVARCHAR = (-9),
SQL_WLONGVARCHAR = (-10),
SQL_C_WCHAR = SQL_WCHAR,
SQL_C_TCHAR = SQL_C_WCHAR
}
enum int SQL_SQLSTATE_SIZEW = 10; /* size of SQLSTATE for unicode */
// UNICODE versions
SQLRETURN SQLColAttributeW
(
SQLHSTMT hstmt,
SQLUSMALLINT iCol,
SQLUSMALLINT iField,
SQLPOINTER pCharAttr,
SQLSMALLINT cbCharAttrMax,
SQLSMALLINT *pcbCharAttr,
SQLPOINTER pNumAttr
);
SQLRETURN SQLColAttributesW
(
SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLUSMALLINT fDescType,
SQLPOINTER rgbDesc,
SQLSMALLINT cbDescMax,
SQLSMALLINT *pcbDesc,
SQLINTEGER *pfDesc
);
SQLRETURN SQLConnectW
(
SQLHDBC hdbc,
SQLWCHAR *szDSN,
SQLSMALLINT cbDSN,
SQLWCHAR *szUID,
SQLSMALLINT cbUID,
SQLWCHAR *szAuthStr,
SQLSMALLINT cbAuthStr
);
SQLRETURN SQLDescribeColW
(
SQLHSTMT hstmt,
SQLUSMALLINT icol,
SQLWCHAR *szColName,
SQLSMALLINT cbColNameMax,
SQLSMALLINT *pcbColName,
SQLSMALLINT *pfSqlType,
SQLUINTEGER *pcbColDef,
SQLSMALLINT *pibScale,
SQLSMALLINT *pfNullable
);
SQLRETURN SQLErrorW
(
SQLHENV henv,
SQLHDBC hdbc,
SQLHSTMT hstmt,
SQLWCHAR *szSqlState,
SQLINTEGER *pfNativeError,
SQLWCHAR *szErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT *pcbErrorMsg
);
SQLRETURN SQLExecDirectW
(
SQLHSTMT hstmt,
SQLWCHAR *szSqlStr,
SQLINTEGER cbSqlStr
);
SQLRETURN SQLGetConnectAttrW
(
SQLHDBC hdbc,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue
);
SQLRETURN SQLGetCursorNameW
(
SQLHSTMT hstmt,
SQLWCHAR *szCursor,
SQLSMALLINT cbCursorMax,
SQLSMALLINT *pcbCursor
);
SQLRETURN SQLSetDescFieldW
(
SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber,
SQLSMALLINT FieldIdentifier,
SQLPOINTER Value,
SQLINTEGER BufferLength
);
SQLRETURN SQLGetDescFieldW
(
SQLHDESC hdesc,
SQLSMALLINT iRecord,
SQLSMALLINT iField,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue
);
SQLRETURN SQLGetDescRecW
(
SQLHDESC hdesc,
SQLSMALLINT iRecord,
SQLWCHAR *szName,
SQLSMALLINT cbNameMax,
SQLSMALLINT *pcbName,
SQLSMALLINT *pfType,
SQLSMALLINT *pfSubType,
SQLINTEGER *pLength,
SQLSMALLINT *pPrecision,
SQLSMALLINT *pScale,
SQLSMALLINT *pNullable
);
SQLRETURN SQLGetDiagFieldW
(
SQLSMALLINT fHandleType,
SQLHANDLE handle,
SQLSMALLINT iRecord,
SQLSMALLINT fDiagField,
SQLPOINTER rgbDiagInfo,
SQLSMALLINT cbDiagInfoMax,
SQLSMALLINT *pcbDiagInfo
);
SQLRETURN SQLGetDiagRecW
(
SQLSMALLINT fHandleType,
SQLHANDLE handle,
SQLSMALLINT iRecord,
SQLWCHAR *szSqlState,
SQLINTEGER *pfNativeError,
SQLWCHAR *szErrorMsg,
SQLSMALLINT cbErrorMsgMax,
SQLSMALLINT *pcbErrorMsg
);
SQLRETURN SQLPrepareW
(
SQLHSTMT hstmt,
SQLWCHAR *szSqlStr,
SQLINTEGER cbSqlStr
);
SQLRETURN SQLSetConnectAttrW
(
SQLHDBC hdbc,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValue
);
SQLRETURN SQLSetCursorNameW
(
SQLHSTMT hstmt,
SQLWCHAR *szCursor,
SQLSMALLINT cbCursor
);
SQLRETURN SQLColumnsW
(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLWCHAR *szColumnName,
SQLSMALLINT cbColumnName
);
SQLRETURN SQLGetConnectOptionW
(
SQLHDBC hdbc,
SQLUSMALLINT fOption,
SQLPOINTER pvParam
);
SQLRETURN SQLGetInfoW
(
SQLHDBC hdbc,
SQLUSMALLINT fInfoType,
SQLPOINTER rgbInfoValue,
SQLSMALLINT cbInfoValueMax,
SQLSMALLINT *pcbInfoValue
);
SQLRETURN SQLGetTypeInfoW
(
SQLHSTMT StatementHandle,
SQLSMALLINT DataType
);
SQLRETURN SQLSetConnectOptionW
(
SQLHDBC hdbc,
SQLUSMALLINT fOption,
SQLUINTEGER vParam
);
SQLRETURN SQLSpecialColumnsW
(
SQLHSTMT hstmt,
SQLUSMALLINT fColType,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT fScope,
SQLUSMALLINT fNullable
);
SQLRETURN SQLStatisticsW
(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLUSMALLINT fUnique,
SQLUSMALLINT fAccuracy
);
SQLRETURN SQLTablesW
(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLWCHAR *szTableType,
SQLSMALLINT cbTableType
);
SQLRETURN SQLDataSourcesW
(
SQLHENV henv,
SQLUSMALLINT fDirection,
SQLWCHAR *szDSN,
SQLSMALLINT cbDSNMax,
SQLSMALLINT *pcbDSN,
SQLWCHAR *szDescription,
SQLSMALLINT cbDescriptionMax,
SQLSMALLINT *pcbDescription
);
SQLRETURN SQLDriverConnectW
(
SQLHDBC hdbc,
SQLHWND hwnd,
SQLWCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLWCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut,
SQLUSMALLINT fDriverCompletion
);
SQLRETURN SQLBrowseConnectW
(
SQLHDBC hdbc,
SQLWCHAR *szConnStrIn,
SQLSMALLINT cbConnStrIn,
SQLWCHAR *szConnStrOut,
SQLSMALLINT cbConnStrOutMax,
SQLSMALLINT *pcbConnStrOut
);
SQLRETURN SQLColumnPrivilegesW
(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName,
SQLWCHAR *szColumnName,
SQLSMALLINT cbColumnName
);
SQLRETURN SQLGetStmtAttrW
(
SQLHSTMT hstmt,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax,
SQLINTEGER *pcbValue
);
SQLRETURN SQLSetStmtAttrW
(
SQLHSTMT hstmt,
SQLINTEGER fAttribute,
SQLPOINTER rgbValue,
SQLINTEGER cbValueMax
);
SQLRETURN SQLForeignKeysW
(
SQLHSTMT hstmt,
SQLWCHAR *szPkCatalogName,
SQLSMALLINT cbPkCatalogName,
SQLWCHAR *szPkSchemaName,
SQLSMALLINT cbPkSchemaName,
SQLWCHAR *szPkTableName,
SQLSMALLINT cbPkTableName,
SQLWCHAR *szFkCatalogName,
SQLSMALLINT cbFkCatalogName,
SQLWCHAR *szFkSchemaName,
SQLSMALLINT cbFkSchemaName,
SQLWCHAR *szFkTableName,
SQLSMALLINT cbFkTableName
);
SQLRETURN SQLNativeSqlW
(
SQLHDBC hdbc,
SQLWCHAR *szSqlStrIn,
SQLINTEGER cbSqlStrIn,
SQLWCHAR *szSqlStr,
SQLINTEGER cbSqlStrMax,
SQLINTEGER *pcbSqlStr
);
SQLRETURN SQLPrimaryKeysW
(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName
);
SQLRETURN SQLProcedureColumnsW
(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szProcName,
SQLSMALLINT cbProcName,
SQLWCHAR *szColumnName,
SQLSMALLINT cbColumnName
);
SQLRETURN SQLProceduresW
(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szProcName,
SQLSMALLINT cbProcName
);
SQLRETURN SQLTablePrivilegesW
(
SQLHSTMT hstmt,
SQLWCHAR *szCatalogName,
SQLSMALLINT cbCatalogName,
SQLWCHAR *szSchemaName,
SQLSMALLINT cbSchemaName,
SQLWCHAR *szTableName,
SQLSMALLINT cbTableName
);
SQLRETURN SQLDriversW
(
SQLHENV henv,
SQLUSMALLINT fDirection,
SQLWCHAR *szDriverDesc,
SQLSMALLINT cbDriverDescMax,
SQLSMALLINT *pcbDriverDesc,
SQLWCHAR *szDriverAttributes,
SQLSMALLINT cbDrvrAttrMax,
SQLSMALLINT *pcbDrvrAttr
);
//---------------------------------------------
// Mapping Unicode Functions
//---------------------------------------------
/+
alias SQLColAttributeW SQLColAttribute;
alias SQLColAttributesW SQLColAttributes;
alias SQLConnectW SQLConnect;
alias SQLDescribeColW SQLDescribeCol;
alias SQLErrorW SQLError;
alias SQLExecDirectW SQLExecDirect;
alias SQLGetConnectAttrW SQLGetConnectAttr;
alias SQLGetCursorNameW SQLGetCursorName;
alias SQLGetDescFieldW SQLGetDescField;
alias SQLGetDescRecW SQLGetDescRec;
alias SQLGetDiagFieldW SQLGetDiagField;
alias SQLGetDiagRecW SQLGetDiagRec;
alias SQLPrepareW SQLPrepare;
alias SQLSetConnectAttrW SQLSetConnectAttr;
alias SQLSetCursorNameW SQLSetCursorName;
alias SQLSetDescFieldW SQLSetDescField;
alias SQLSetStmtAttrW SQLSetStmtAttr;
alias SQLColumnsW SQLColumns;
alias SQLGetConnectOptionW SQLGetConnectOption;
alias SQLGetInfoW SQLGetInfo;
alias SQLGetTypeInfoW SQLGetTypeInfo;
alias SQLSetConnectOptionW SQLSetConnectOption;
alias SQLSpecialColumnsW SQLSpecialColumns;
alias SQLStatisticsW SQLStatistics;
alias SQLTablesW SQLTables;
alias SQLDataSourcesW SQLDataSources;
alias SQLDriverConnectW SQLDriverConnect;
alias SQLBrowseConnectW SQLBrowseConnect;
alias SQLColumnPrivilegesW SQLColumnPrivileges;
alias SQLForeignKeysW SQLForeignKeys;
alias SQLNativeSqlW SQLNativeSql;
alias SQLPrimaryKeysW SQLPrimaryKeys;
alias SQLProcedureColumnsW SQLProcedureColumns;
alias SQLProceduresW SQLProcedures;
alias SQLTablePrivilegesW SQLTablePrivileges;
alias SQLDriversW SQLDrivers;
+/

View file

@ -196,9 +196,9 @@ else
endif
# Other D modules that aren't under std/
EXTRA_DOCUMENTABLES += $(addprefix etc/c/,curl sqlite3 zlib) $(addprefix \
std/c/, fenv locale math process stdarg stddef stdio stdlib string \
time wcharh)
EXTRA_DOCUMENTABLES += $(addprefix etc/c/,curl odbc/sql odbc/sqlext \
odbc/sqltypes odbc/sqlucode sqlite3 zlib) $(addprefix std/c/,fenv locale \
math process stdarg stddef stdio stdlib string time wcharh)
EXTRA_MODULES += $(EXTRA_DOCUMENTABLES) $(addprefix \
std/internal/digest/, sha_SSSE3 ) $(addprefix \
std/internal/math/, biguintcore biguintnoasm biguintx86 \