r9450: 22 May 2004 Kevin Rosenberg
[clsql.git] / db-odbc / odbc-ff-interface.lisp
index 864436dac09712e4f612dd003505ad8ad14b2c4c..96c9c5187c411a11c63663b3734c567bf3c51521 100644 (file)
@@ -6,7 +6,7 @@
 ;;;; Purpose:  Function definitions for UFFI interface to ODBC
 ;;;; Author:   Kevin M. Rosenberg
 ;;;;
-;;;; $Id: odbc-package.lisp 7061 2003-09-07 06:34:45Z kevin $
+;;;; $Id$
 ;;;;
 ;;;; This file, part of CLSQL, is Copyright (c) 2004 by Kevin M. Rosenberg
 ;;;; and Copyright (C) Paul Meurer 1999 - 2001. All rights reserved.
@@ -21,7 +21,7 @@
 (def-foreign-type sql-handle :pointer-void)
 (def-foreign-type sql-handle-ptr '(* sql-handle))
 (def-foreign-type string-ptr '(* :unsigned-char))
-(def-type long-ptr-type '(* :long))
+(def-type long-ptr-type '(* #.$ODBC-LONG-TYPE))
 
 
 (def-function "SQLAllocEnv"
@@ -87,7 +87,7 @@
 (def-function "SQLPrepare"
     ((hstmt sql-handle)         ; HSTMT       hstmt
      (*szSqlStr :cstring)     ; UCHAR  FAR *szSqlStr
-     (cbSqlStr :long)           ; SDWORD      cbSqlStr
+     (cbSqlStr :int)           ; SDWORD      cbSqlStr
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
 (def-function "SQLExecDirect"
     ((hstmt sql-handle)         ; HSTMT       hstmt
      (*szSqlStr :cstring)     ; UCHAR  FAR *szSqlStr
-     (cbSqlStr :long)           ; SDWORD      cbSqlStr
+     (cbSqlStr :int)           ; SDWORD      cbSqlStr
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
      (hdbc sql-handle)          ; HDBC        hdbc
      (hstmt sql-handle)         ; HSTMT       hstmt
      (*szSqlState string-ptr)   ; UCHAR  FAR *szSqlState
-     (*pfNativeError :pointer-void)      ; SDWORD FAR *pfNativeError
+     (*pfNativeError (* :int))      ; SDWORD FAR *pfNativeError
      (*szErrorMsg string-ptr)   ; UCHAR  FAR *szErrorMsg
      (cbErrorMsgMax :short)     ; SWORD       cbErrorMsgMax
-     (*pcbErrorMsg :pointer-void)        ; SWORD  FAR *pcbErrorMsg
+     (*pcbErrorMsg (* :short))        ; SWORD  FAR *pcbErrorMsg
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
 
 (def-function "SQLNumResultCols"
     ((hstmt sql-handle)         ; HSTMT       hstmt
-     (*pccol :pointer-void)              ; SWORD  FAR *pccol
+     (*pccol (* :short))              ; SWORD  FAR *pccol
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
 
 (def-function "SQLRowCount"
     ((hstmt sql-handle)         ; HSTMT       hstmt
-     (*pcrow :pointer-void)              ; SDWORD FAR *pcrow
+     (*pcrow (* :int))              ; SDWORD FAR *pcrow
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
      (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
+     (*pcbColName (* :short))         ; SWORD  FAR *pcbColName
+     (*pfSqlType (* :short))          ; SWORD  FAR *pfSqlType
+     (*pcbColDef (* #.$ODBC-ULONG-TYPE))          ; UDWORD FAR *pcbColDef
+     (*pibScale (* :short))           ; SWORD  FAR *pibScale
+     (*pfNullable (* :short))         ; SWORD  FAR *pfNullable
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
     ((hstmt sql-handle)         ; HSTMT       hstmt
      (icol :short)              ; UWORD       icol
      (fDescType :short)         ; UWORD       fDescType
-     (rgbDesc :cstring)             ; PTR         rgbDesc
+     (rgbDesc string-ptr)             ; PTR         rgbDesc
      (cbDescMax :short)         ; SWORD       cbDescMax
-     (*pcbDesc :cstring)            ; SWORD  FAR *pcbDesc
-     (*pfDesc :pointer-void)             ; SDWORD FAR *pfDesc
+     (*pcbDesc (* :short))            ; SWORD  FAR *pcbDesc
+     (*pfDesc (* :int))             ; SDWORD FAR *pfDesc
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
      (icol :short)              ; UWORD       icol
      (fCType :short)            ; SWORD       fCType
      (rgbValue :pointer-void)            ; PTR         rgbValue
-     (cbValueMax :long)         ; SDWORD      cbValueMax
-     (*pcbValue :pointer-void)           ; SDWORD FAR *pcbValue
+     (cbValueMax :int)         ; SDWORD      cbValueMax
+     (*pcbValue (* :int))           ; SDWORD FAR *pcbValue
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
 (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
+     (*pfSqlType (* :short))          ; SWORD  FAR *pfSqlType
+     (*pcbColDef (* :unsigned-int))          ; UDWORD FAR *pcbColDef
+     (*pibScale (* :short))           ; SWORD  FAR *pibScale
+     (*pfNullable (* :short))         ; SWORD  FAR *pfNullable
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
      (fParamType :short)        ; SWORD       fParamType
      (fCType :short)            ; SWORD       fCType
      (fSqlType :short)          ; SWORD       fSqlType
-     (cbColDef :long)           ; UDWORD      cbColDef
+     (cbColDef :int)           ; UDWORD      cbColDef
      (ibScale :short)           ; SWORD       ibScale
      (rgbValue :pointer-void)            ; PTR         rgbValue
-     (cbValueMax :long)         ; SDWORD      cbValueMax
+     (cbValueMax :int)         ; SDWORD      cbValueMax
      (*pcbValue :pointer-void)           ; SDWORD FAR *pcbValue
      )
   :module "odbc"
      (icol :short)              ; UWORD       icol
      (fCType :short)            ; SWORD       fCType
      (rgbValue :pointer-void)            ; PTR         rgbValue
-     (cbValueMax :long)         ; SDWORD      cbValueMax
+     (cbValueMax :int)         ; SDWORD      cbValueMax
      (*pcbValue :pointer-void)           ; SDWORD FAR *pcbValue
      )
   :module "odbc"
 (def-function "SQLPutData"
     ((hstmt sql-handle)         ; HSTMT       hstmt
      (rgbValue :pointer-void)            ; PTR         rgbValue
-     (cbValue :long)            ; SDWORD      cbValue
+     (cbValue :int)            ; SDWORD      cbValue
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
 (def-function "SQLSetConnectOption"
     ((hdbc sql-handle)          ; HDBC        hdbc
      (fOption :short)           ; UWORD       fOption
-     (vParam :long)             ; UDWORD      vParam
+     (vParam :int)             ; UDWORD      vParam
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
 (def-function "SQLExtendedFetch"
     ((hstmt sql-handle)         ; HSTMT       hstmt
      (fFetchType :short)        ; UWORD       fFetchType
-     (irow :long)               ; SDWORD      irow
+     (irow :int)               ; SDWORD      irow
      (*pcrow :pointer-void)              ; UDWORD FAR *pcrow
      (*rgfRowStatus :pointer-void)       ; UWORD  FAR *rgfRowStatus
      )
      (fDirection :short)
      (*szDSN string-ptr)        ; UCHAR  FAR *szDSN
      (cbDSNMax :short)          ; SWORD       cbDSNMax
-     (*pcbDSN :pointer-void)             ; SWORD      *pcbDSN
+     (*pcbDSN (* :short))             ; SWORD      *pcbDSN
      (*szDescription string-ptr) ; UCHAR     *szDescription
      (cbDescriptionMax :short)  ; SWORD       cbDescriptionMax
-     (*pcbDescription :pointer-void)     ; SWORD      *pcbDescription
+     (*pcbDescription (* :short))     ; SWORD      *pcbDescription
      )
   :module "odbc"
   :returning :short)              ; RETCODE_SQL_API
   (hour     :short)
   (minute   :short)
   (second   :short)
-  (fraction :long))
+  (fraction :int))
 
 ;;; Added by KMR
 
   :returning :short)
 
 
+(def-function "SQLStatistics"
+    ((hstmt :pointer-void)
+     (catalog-name :pointer-void)
+     (catalog-name-length :short)
+     (schema-name :pointer-void)
+     (schema-name-length :short)
+     (table-name :cstring)
+     (table-name-length :short)
+     (unique :short)
+     (reserved :short))
+  :returning :short)
+
+