X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=db-odbc%2Fodbc-ff-interface.lisp;fp=db-odbc%2Fodbc-ff-interface.lisp;h=48bbe1c8796dbac0c646b3d91796afd1722b73f6;hb=44152655aacc033b0a544aca9f91700177d22a03;hp=0000000000000000000000000000000000000000;hpb=5c11038381563b1442d966822749bfc12ec0697c;p=clsql.git diff --git a/db-odbc/odbc-ff-interface.lisp b/db-odbc/odbc-ff-interface.lisp new file mode 100644 index 0000000..48bbe1c --- /dev/null +++ b/db-odbc/odbc-ff-interface.lisp @@ -0,0 +1,349 @@ +;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: odbc -*- +;;;; ************************************************************************* +;;;; FILE IDENTIFICATION +;;;; +;;;; Name: odbc-ff-interface.lisp +;;;; Purpose: Function definitions for UFFI interface to ODBC +;;;; Author: Kevin M. Rosenberg +;;;; +;;;; $Id: odbc-package.lisp 7061 2003-09-07 06:34:45Z kevin $ +;;;; +;;;; This file, part of CLSQL, is Copyright (c) 2004 by Kevin M. Rosenberg +;;;; and Copyright (C) Paul Meurer 1999 - 2001. All rights reserved. +;;;; +;;;; CLSQL users are granted the rights to distribute and use this software +;;;; as governed by the terms of the Lisp Lesser GNU Public License +;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. +;;;; ************************************************************************* + +(in-package #:odbc) + +(def-foreign-type sql-handle (* :void)) +(def-foreign-type sql-handle-ptr (* sql-handle)) +(def-foreign-type string-ptr (* :void)) + +(def-type long-ptr-type '(* :long)) + + +(def-function "SQLAllocEnv" + ((*phenv sql-handle-ptr) ; HENV FAR *phenv + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLAllocConnect" + ((henv sql-handle) ; HENV henv + (*phdbc sql-handle-ptr) ; HDBC FAR *phdbc + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLConnect" + ((hdbc sql-handle) ; HDBC hdbc + (*szDSN string-ptr) ; UCHAR FAR *szDSN + (cbDSN :short) ; SWORD cbDSN + (*szUID string-ptr) ; UCHAR FAR *szUID + (cbUID :short) ; SWORD cbUID + (*szAuthStr string-ptr) ; UCHAR FAR *szAuthStr + (cbAuthStr :short) ; SWORD cbAuthStr + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLDriverConnect" + ((hdbc sql-handle) ; HDBC hdbc + (hwnd sql-handle) ; SQLHWND hwnd + (*szConnStrIn string-ptr) ; UCHAR FAR *szConnStrIn + (cbConnStrIn :short) ; SWORD cbConnStrIn + (*szConnStrOut string-ptr) ; UCHAR FAR *szConnStrOut + (cbConnStrOutMax :short) ; SWORD cbConnStrOutMax + (*pcbConnStrOut :pointer-void) ; SWORD FAR *pcbConnStrOut + (fDriverCompletion :short) ; UWORD fDriverCompletion + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLDisconnect" + ((hdbc sql-handle)) ; HDBC hdbc + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLAllocStmt" + ((hdbc sql-handle) ; HDBC hdbc + (*phstmt sql-handle-ptr) ; HSTMT FAR *phstmt + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLGetInfo" + ((hdbc sql-handle) ; HDBC hdbc + (fInfoType :short) ; UWORD fInfoType + (rgbInfoValue :pointer-void) ; PTR rgbInfoValue + (cbInfoValueMax :short) ; SWORD cbInfoValueMax + (*pcbInfoValue :pointer-void) ; SWORD FAR *pcbInfoValue + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLPrepare" + ((hstmt sql-handle) ; HSTMT hstmt + (*szSqlStr string-ptr) ; UCHAR FAR *szSqlStr + (cbSqlStr :long) ; SDWORD cbSqlStr + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLExecute" + ((hstmt sql-handle) ; HSTMT hstmt + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLExecDirect" + ((hstmt sql-handle) ; HSTMT hstmt + (*szSqlStr string-ptr) ; UCHAR FAR *szSqlStr + (cbSqlStr :long) ; SDWORD cbSqlStr + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLFreeStmt" + ((hstmt sql-handle) ; HSTMT hstmt + (fOption :short)) ; UWORD fOption + :module :odbc + :returning :short) ; RETCODE_SQL_API + + (def-function "SQLCancel" + ((hstmt sql-handle) ; HSTMT hstmt + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLError" + ((henv sql-handle) ; HENV henv + (hdbc sql-handle) ; HDBC hdbc + (hstmt sql-handle) ; HSTMT hstmt + (*szSqlState string-ptr) ; UCHAR FAR *szSqlState + (*pfNativeError :pointer-void) ; SDWORD FAR *pfNativeError + (*szErrorMsg string-ptr) ; UCHAR FAR *szErrorMsg + (cbErrorMsgMax :short) ; SWORD cbErrorMsgMax + (*pcbErrorMsg :pointer-void) ; SWORD FAR *pcbErrorMsg + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLNumResultCols" + ((hstmt sql-handle) ; HSTMT hstmt + (*pccol :pointer-void) ; SWORD FAR *pccol + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLRowCount" + ((hstmt sql-handle) ; HSTMT hstmt + (*pcrow :pointer-void) ; SDWORD FAR *pcrow + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLDescribeCol" + ((hstmt sql-handle) ; HSTMT hstmt + (icol :short) ; UWORD icol + (*szColName string-ptr) ; UCHAR FAR *szColName + (cbColNameMax :short) ; SWORD cbColNameMax + (*pcbColName :pointer-void) ; SWORD FAR *pcbColName + (*pfSqlType :pointer-void) ; SWORD FAR *pfSqlType + (*pcbColDef :pointer-void) ; UDWORD FAR *pcbColDef + (*pibScale :pointer-void) ; SWORD FAR *pibScale + (*pfNullable :pointer-void) ; SWORD FAR *pfNullable + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLColAttributes" + ((hstmt sql-handle) ; HSTMT hstmt + (icol :short) ; UWORD icol + (fDescType :short) ; UWORD fDescType + (rgbDesc :pointer-void) ; PTR rgbDesc + (cbDescMax :short) ; SWORD cbDescMax + (*pcbDesc :pointer-void) ; SWORD FAR *pcbDesc + (*pfDesc :pointer-void) ; SDWORD FAR *pfDesc + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLColumns" + ((hstmt sql-handle) ; HSTMT hstmt + (*szTableQualifier string-ptr) ; UCHAR FAR *szTableQualifier + (cbTableQualifier :short) ; SWORD cbTableQualifier + (*szTableOwner string-ptr) ; UCHAR FAR *szTableOwner + (cbTableOwner :short) ; SWORD cbTableOwner + (*szTableName string-ptr) ; UCHAR FAR *szTableName + (cbTableName :short) ; SWORD cbTableName + (*szColumnName string-ptr) ; UCHAR FAR *szColumnName + (cbColumnName :short) ; SWORD cbColumnName + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLBindCol" + ((hstmt sql-handle) ; HSTMT hstmt + (icol :short) ; UWORD icol + (fCType :short) ; SWORD fCType + (rgbValue :pointer-void) ; PTR rgbValue + (cbValueMax :long) ; SDWORD cbValueMax + (*pcbValue :pointer-void) ; SDWORD FAR *pcbValue + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLFetch" + ((hstmt sql-handle) ; HSTMT hstmt + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLTransact" + ((henv sql-handle) ; HENV henv + (hdbc sql-handle) ; HDBC hdbc + (fType :short) ; UWORD fType ($SQL_COMMIT or $SQL_ROLLBACK) + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +;; ODBC 2.0 +(def-function "SQLDescribeParam" + ((hstmt sql-handle) ; HSTMT hstmt + (ipar :short) ; UWORD ipar + (*pfSqlType :pointer-void) ; SWORD FAR *pfSqlType + (*pcbColDef :pointer-void) ; UDWORD FAR *pcbColDef + (*pibScale :pointer-void) ; SWORD FAR *pibScale + (*pfNullable :pointer-void) ; SWORD FAR *pfNullable + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +;; ODBC 2.0 +(def-function "SQLBindParameter" + ((hstmt sql-handle) ; HSTMT hstmt + (ipar :short) ; UWORD ipar + (fParamType :short) ; SWORD fParamType + (fCType :short) ; SWORD fCType + (fSqlType :short) ; SWORD fSqlType + (cbColDef :long) ; UDWORD cbColDef + (ibScale :short) ; SWORD ibScale + (rgbValue :pointer-void) ; PTR rgbValue + (cbValueMax :long) ; SDWORD cbValueMax + (*pcbValue :pointer-void) ; SDWORD FAR *pcbValue + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +;; level 1 +(def-function "SQLGetData" + ((hstmt sql-handle) ; HSTMT hstmt + (icol :short) ; UWORD icol + (fCType :short) ; SWORD fCType + (rgbValue :pointer-void) ; PTR rgbValue + (cbValueMax :long) ; SDWORD cbValueMax + (*pcbValue :pointer-void) ; SDWORD FAR *pcbValue + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLParamData" + ((hstmt sql-handle) ; HSTMT hstmt + (*prgbValue :pointer-void) ; PTR FAR *prgbValue + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLPutData" + ((hstmt sql-handle) ; HSTMT hstmt + (rgbValue :pointer-void) ; PTR rgbValue + (cbValue :long) ; SDWORD cbValue + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLGetConnectOption" + ((hdbc sql-handle) ; HDBC hdbc + (fOption :short) ; UWORD fOption + (pvParam :pointer-void) ; PTR pvParam + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLSetConnectOption" + ((hdbc sql-handle) ; HDBC hdbc + (fOption :short) ; UWORD fOption + (vParam :long) ; UDWORD vParam + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLSetPos" + ((hstmt sql-handle) ; HSTMT hstmt + (irow :short) ; UWORD irow + (fOption :short) ; UWORD fOption + (fLock :short) ; UWORD fLock + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + + ; level 2 +(def-function "SQLExtendedFetch" + ((hstmt sql-handle) ; HSTMT hstmt + (fFetchType :short) ; UWORD fFetchType + (irow :long) ; SDWORD irow + (*pcrow :pointer-void) ; UDWORD FAR *pcrow + (*rgfRowStatus :pointer-void) ; UWORD FAR *rgfRowStatus + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLDataSources" + ((henv sql-handle) ; HENV henv + (fDirection :short) + (*szDSN string-ptr) ; UCHAR FAR *szDSN + (cbDSNMax :short) ; SWORD cbDSNMax + (*pcbDSN :pointer-void) ; SWORD *pcbDSN + (*szDescription string-ptr) ; UCHAR *szDescription + (cbDescriptionMax :short) ; SWORD cbDescriptionMax + (*pcbDescription :pointer-void) ; SWORD *pcbDescription + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + +(def-function "SQLFreeEnv" + ((henv sql-handle) ; HSTMT hstmt + ) + :module :odbc + :returning :short) ; RETCODE_SQL_API + + +;;; foreign type definitions + +;;(defmacro %sql-len-data-at-exec (length) +;; `(- $SQL_LEN_DATA_AT_EXEC_OFFSET ,length)) + + +(def-struct sql-c-time + (hour :short) + (minute :short) + (second :short)) + +(def-struct sql-c-date + (year :short) + (month :short) + (day :short)) + +(def-struct sql-c-timestamp + (year :short) + (month :short) + (day :short) + (hour :short) + (minute :short) + (second :short) + (fraction :long)) +