Code for generating scheme-variables from sql.h's #defines

This commit is contained in:
eknauel 2003-02-07 16:23:33 +00:00
parent 482cc64477
commit 3393eb232e
2 changed files with 427 additions and 0 deletions

View File

@ -0,0 +1,416 @@
(define (pretty-print-constant str)
(string-map
(lambda (c) (if (char=? c #\_) #\- c))
(string-downcase str)))
(define (generate-print-func-dec c-name scheme-name type)
(format
(current-output-port)
"printf(\"(define ~A %d)\\n\", ~A);~%" scheme-name c-name))
(define (generate-print-func c-name scheme-name type)
(let ((real-scheme-name (or scheme-name
(pretty-print-constant c-name))))
(cond ((equal? type 'dec)
(generate-print-func-dec c-name real-scheme-name type))
(else
(error "don't know this type " type)))))
(define (generate-comment str)
(format (current-output-port)
"printf(\"\\n\\n~A\\n\");~%" str))
(define (generate-constants const-list)
(map
(lambda (thing)
(cond ((string? thing) (generate-comment thing))
((list? thing)
(generate-print-func (car thing) (cadr thing) (caddr thing)))
(else
(error "Don't know what to do with this " thing))))
const-list))
(define odbc-constants
'(";;; some return values"
("SQL_NULL_DATA" #f dec)
("SQL_DATA_AT_EXEC" #f dec)
("SQL_SUCCESS" #f dec)
("SQL_SUCCESS_WITH_INFO" #f dec)
("SQL_NO_DATA" #f dec)
("SQL_ERROR" #f dec)
("SQL_INVALID_HANDLE" #f dec)
("SQL_STILL_EXECUTING" #f dec)
("SQL_NEED_DATA" #f dec)
";;; use these to indicate string termination to some function"
("SQL_NTS" #f dec)
("SQL_NTSL" #f dec)
";;; maximum message length"
("SQL_MAX_MESSAGE_LENGTH" #f dec)
";;; date/time length constants"
("SQL_DATE_LEN" #f dec)
("SQL_TIME_LEN" #f dec)
("SQL_TIMESTAMP_LEN" #f dec)
";;; handle type identifiers"
("SQL_HANDLE_ENV" #f dec)
("SQL_HANDLE_DBC" #f dec)
("SQL_HANDLE_STMT" #f dec)
("SQL_HANDLE_DESC" #f dec)
";;; environment attribute"
("SQL_ATTR_OUTPUT_NTS" #f dec)
";;; connection attributes"
("SQL_ATTR_AUTO_IPD" #f dec)
("SQL_ATTR_METADATA_ID" #f dec)
";;; statement attributes"
("SQL_ATTR_APP_ROW_DESC" #f dec)
("SQL_ATTR_APP_PARAM_DESC" #f dec)
("SQL_ATTR_IMP_ROW_DESC" #f dec)
("SQL_ATTR_IMP_PARAM_DESC" #f dec)
("SQL_ATTR_CURSOR_SCROLLABLE" #f dec)
("SQL_ATTR_CURSOR_SENSITIVITY" #f dec)
("SQL_NONSCROLLABLE" #f dec)
("SQL_SCROLLABLE" #f dec)
";;; identifiers of fields in the SQL descriptor"
("SQL_DESC_COUNT" #f dec)
("SQL_DESC_TYPE" #f dec)
("SQL_DESC_LENGTH" #f dec)
("SQL_DESC_OCTET_LENGTH_PTR" #f dec)
("SQL_DESC_PRECISION" #f dec)
("SQL_DESC_SCALE" #f dec)
("SQL_DESC_DATETIME_INTERVAL_CODE" #f dec)
("SQL_DESC_NULLABLE" #f dec)
("SQL_DESC_INDICATOR_PTR" #f dec)
("SQL_DESC_DATA_PTR" #f dec)
("SQL_DESC_NAME" #f dec)
("SQL_DESC_UNNAMED" #f dec)
("SQL_DESC_OCTET_LENGTH" #f dec)
("SQL_DESC_ALLOC_TYPE" #f dec)
";;; identifiers of fields in the diagnostics area"
("SQL_DIAG_RETURNCODE" #f dec)
("SQL_DIAG_NUMBER" #f dec)
("SQL_DIAG_ROW_COUNT" #f dec)
("SQL_DIAG_SQLSTATE" #f dec)
("SQL_DIAG_NATIVE" #f dec)
("SQL_DIAG_MESSAGE_TEXT" #f dec)
("SQL_DIAG_DYNAMIC_FUNCTION" #f dec)
("SQL_DIAG_CLASS_ORIGIN" #f dec)
("SQL_DIAG_SUBCLASS_ORIGIN" #f dec)
("SQL_DIAG_CONNECTION_NAME" #f dec)
("SQL_DIAG_SERVER_NAME" #f dec)
("SQL_DIAG_DYNAMIC_FUNCTION_CODE" #f dec)
("SQL_DIAG_ALTER_DOMAIN" #f dec)
("SQL_DIAG_ALTER_TABLE" #f dec)
("SQL_DIAG_CALL" #f dec)
("SQL_DIAG_CREATE_ASSERTION" #f dec)
("SQL_DIAG_CREATE_CHARACTER_SET" #f dec)
("SQL_DIAG_CREATE_COLLATION" #f dec)
("SQL_DIAG_CREATE_DOMAIN" #f dec)
("SQL_DIAG_CREATE_INDEX" #f dec)
("SQL_DIAG_CREATE_SCHEMA" #f dec)
("SQL_DIAG_CREATE_TABLE" #f dec)
("SQL_DIAG_CREATE_TRANSLATION" #f dec)
("SQL_DIAG_CREATE_VIEW" #f dec)
("SQL_DIAG_DELETE_WHERE" #f dec)
("SQL_DIAG_DROP_ASSERTION" #f dec)
("SQL_DIAG_DROP_CHARACTER_SET" #f dec)
("SQL_DIAG_DROP_COLLATION" #f dec)
("SQL_DIAG_DROP_DOMAIN" #f dec)
("SQL_DIAG_DROP_INDEX" #f dec)
("SQL_DIAG_DROP_SCHEMA" #f dec)
("SQL_DIAG_DROP_TABLE" #f dec)
("SQL_DIAG_DROP_TRANSLATION" #f dec)
("SQL_DIAG_DROP_VIEW" #f dec)
("SQL_DIAG_DYNAMIC_DELETE_CURSOR" #f dec)
("SQL_DIAG_DYNAMIC_UPDATE_CURSOR" #f dec)
("SQL_DIAG_GRANT" #f dec)
("SQL_DIAG_INSERT" #f dec)
("SQL_DIAG_REVOKE" #f dec)
("SQL_DIAG_SELECT_CURSOR" #f dec)
("SQL_DIAG_UNKNOWN_STATEMENT" #f dec)
("SQL_DIAG_UPDATE_WHERE" #f dec)
";;; SQL data type codes"
("SQL_UNKNOWN_TYPE" #f dec)
("SQL_CHAR" #f dec)
("SQL_NUMERIC" #f dec)
("SQL_DECIMAL" #f dec)
("SQL_INTEGER" #f dec)
("SQL_SMALLINT" #f dec)
("SQL_FLOAT" #f dec)
("SQL_REAL" #f dec)
("SQL_DOUBLE" #f dec)
("SQL_DATETIME" #f dec)
("SQL_VARCHAR" #f dec)
("SQL_TYPE_DATE" #f dec)
("SQL_TYPE_TIME" #f dec)
("SQL_TYPE_TIMESTAMP" #f dec)
("SQL_UNSPECIFIED" #f dec)
("SQL_INSENSITIVE" #f dec)
("SQL_SENSITIVE" #f dec)
("SQL_ALL_TYPES" #f dec)
("SQL_DEFAULT" #f dec)
("SQL_ARD_TYPE" #f dec)
("SQL_CODE_DATE" #f dec)
("SQL_CODE_TIME" #f dec)
("SQL_CODE_TIMESTAMP" #f dec)
("SQL_FALSE" #f dec)
("SQL_TRUE" #f dec)
("SQL_NO_NULLS" #f dec)
("SQL_NULLABLE" #f dec)
("SQL_NULLABLE_UNKNOWN" #f dec)
("SQL_PRED_NONE" #f dec)
("SQL_PRED_CHAR" #f dec)
("SQL_PRED_BASIC" #f dec)
("SQL_NAMED" #f dec)
("SQL_UNNAMED" #f dec)
("SQL_DESC_ALLOC_AUTO" #f dec)
("SQL_DESC_ALLOC_USER" #f dec)
("SQL_CLOSE" #f dec)
("SQL_DROP" #f dec)
("SQL_UNBIND" #f dec)
("SQL_RESET_PARAMS" #f dec)
("SQL_FETCH_NEXT" #f dec)
("SQL_FETCH_FIRST" #f dec)
("SQL_FETCH_LAST" #f dec)
("SQL_FETCH_PRIOR" #f dec)
("SQL_FETCH_ABSOLUTE" #f dec)
("SQL_FETCH_RELATIVE" #f dec)
("SQL_COMMIT" #f dec)
("SQL_ROLLBACK" #f dec)
("SQL_NULL_HENV" #f dec)
("SQL_NULL_HDBC" #f dec)
("SQL_NULL_HSTMT" #f dec)
("SQL_NULL_HDESC" #f dec)
("SQL_NULL_HANDLE" #f dec)
("SQL_SCOPE_CURROW" #f dec)
("SQL_SCOPE_TRANSACTION" #f dec)
("SQL_SCOPE_SESSION" #f dec)
("SQL_PC_UNKNOWN" #f dec)
("SQL_PC_NON_PSEUDO" #f dec)
("SQL_PC_PSEUDO" #f dec)
("SQL_ROW_IDENTIFIER" #f dec)
("SQL_INDEX_UNIQUE" #f dec)
("SQL_INDEX_ALL" #f dec)
("SQL_INDEX_CLUSTERED" #f dec)
("SQL_INDEX_HASHED" #f dec)
("SQL_INDEX_OTHER" #f dec)
("SQL_API_SQLALLOCCONNECT" #f dec)
("SQL_API_SQLALLOCENV" #f dec)
("SQL_API_SQLALLOCHANDLE" #f dec)
("SQL_API_SQLALLOCSTMT" #f dec)
("SQL_API_SQLBINDCOL" #f dec)
("SQL_API_SQLBINDPARAM" #f dec)
("SQL_API_SQLCANCEL" #f dec)
("SQL_API_SQLCLOSECURSOR" #f dec)
("SQL_API_SQLCOLATTRIBUTE" #f dec)
("SQL_API_SQLCOLUMNS" #f dec)
("SQL_API_SQLCONNECT" #f dec)
("SQL_API_SQLCOPYDESC" #f dec)
("SQL_API_SQLDATASOURCES" #f dec)
("SQL_API_SQLDESCRIBECOL" #f dec)
("SQL_API_SQLDISCONNECT" #f dec)
("SQL_API_SQLENDTRAN" #f dec)
("SQL_API_SQLERROR" #f dec)
("SQL_API_SQLEXECDIRECT" #f dec)
("SQL_API_SQLEXECUTE" #f dec)
("SQL_API_SQLFETCH" #f dec)
("SQL_API_SQLFETCHSCROLL" #f dec)
("SQL_API_SQLFREECONNECT" #f dec)
("SQL_API_SQLFREEENV" #f dec)
("SQL_API_SQLFREEHANDLE" #f dec)
("SQL_API_SQLFREESTMT" #f dec)
("SQL_API_SQLGETCONNECTATTR" #f dec)
("SQL_API_SQLGETCURSORNAME" #f dec)
("SQL_API_SQLGETDATA" #f dec)
("SQL_API_SQLGETDESCFIELD" #f dec)
("SQL_API_SQLGETDESCREC" #f dec)
("SQL_API_SQLGETDIAGFIELD" #f dec)
("SQL_API_SQLGETDIAGREC" #f dec)
("SQL_API_SQLGETENVATTR" #f dec)
("SQL_API_SQLGETFUNCTIONS" #f dec)
("SQL_API_SQLGETINFO" #f dec)
("SQL_API_SQLGETSTMTATTR" #f dec)
("SQL_API_SQLGETSTMTOPTION" #f dec)
("SQL_API_SQLGETTYPEINFO" #f dec)
("SQL_API_SQLNUMRESULTCOLS" #f dec)
("SQL_API_SQLPARAMDATA" #f dec)
("SQL_API_SQLPREPARE" #f dec)
("SQL_API_SQLPUTDATA" #f dec)
("SQL_API_SQLROWCOUNT" #f dec)
("SQL_API_SQLSETCONNECTATTR" #f dec)
("SQL_API_SQLSETCONNECTOPTION" #f dec)
("SQL_API_SQLSETCURSORNAME" #f dec)
("SQL_API_SQLSETDESCFIELD" #f dec)
("SQL_API_SQLSETDESCREC" #f dec)
("SQL_API_SQLSETENVATTR" #f dec)
("SQL_API_SQLSETPARAM" #f dec)
("SQL_API_SQLSETSTMTATTR" #f dec)
("SQL_API_SQLSETSTMTOPTION" #f dec)
("SQL_API_SQLSPECIALCOLUMNS" #f dec)
("SQL_API_SQLSTATISTICS" #f dec)
("SQL_API_SQLTABLES" #f dec)
("SQL_API_SQLTRANSACT" #f dec)
";;; Information requested by SQLGetInfo()"
("SQL_MAX_DRIVER_CONNECTIONS" #f dec)
("SQL_MAXIMUM_DRIVER_CONNECTIONS" #f dec)
("SQL_MAX_CONCURRENT_ACTIVITIES" #f dec)
("SQL_MAXIMUM_DRIVER_CONNECTIONS" #f dec)
("SQL_DATA_SOURCE_NAME" #f dec)
("SQL_FETCH_DIRECTION" #f dec)
("SQL_SERVER_NAME" #f dec)
("SQL_SEARCH_PATTERN_ESCAPE" #f dec)
("SQL_DBMS_NAME" #f dec)
("SQL_DBMS_VER" #f dec)
("SQL_ACCESSIBLE_TABLES" #f dec)
("SQL_ACCESSIBLE_PROCEDURES" #f dec)
("SQL_CURSOR_COMMIT_BEHAVIOR" #f dec)
("SQL_DATA_SOURCE_READ_ONLY" #f dec)
("SQL_DEFAULT_TXN_ISOLATION" #f dec)
("SQL_IDENTIFIER_CASE" #f dec)
("SQL_IDENTIFIER_QUOTE_CHAR" #f dec)
("SQL_MAX_COLUMN_NAME_LEN" #f dec)
("SQL_MAXIMUM_COLUMN_NAME_LENGTH" #f dec)
("SQL_MAX_CURSOR_NAME_LEN" #f dec)
("SQL_MAXIMUM_CURSOR_NAME_LENGTH" #f dec)
("SQL_MAX_SCHEMA_NAME_LEN" #f dec)
("SQL_MAXIMUM_SCHEMA_NAME_LENGTH" #f dec)
("SQL_MAX_CATALOG_NAME_LEN" #f dec)
("SQL_MAXIMUM_CATALOG_NAME_LENGTH" #f dec)
("SQL_MAX_TABLE_NAME_LEN" #f dec)
("SQL_SCROLL_CONCURRENCY" #f dec)
("SQL_TXN_CAPABLE" #f dec)
("SQL_TRANSACTION_CAPABLE" #f dec)
("SQL_USER_NAME" #f dec)
("SQL_TXN_ISOLATION_OPTION" #f dec)
("SQL_TRANSACTION_ISOLATION_OPTION" #f dec)
("SQL_INTEGRITY" #f dec)
("SQL_GETDATA_EXTENSIONS" #f dec)
("SQL_NULL_COLLATION" #f dec)
("SQL_ALTER_TABLE" #f dec)
("SQL_ORDER_BY_COLUMNS_IN_SELECT" #f dec)
("SQL_SPECIAL_CHARACTERS" #f dec)
("SQL_MAX_COLUMNS_IN_GROUP_BY" #f dec)
("SQL_MAXIMUM_COLUMNS_IN_GROUP_BY" #f dec)
("SQL_MAX_COLUMNS_IN_INDEX" #f dec)
("SQL_MAXIMUM_COLUMNS_IN_INDEX" #f dec)
("SQL_MAX_COLUMNS_IN_ORDER_BY" #f dec)
("SQL_MAXIMUM_COLUMNS_IN_ORDER_BY" #f dec)
("SQL_MAX_COLUMNS_IN_SELECT" #f dec)
("SQL_MAXIMUM_COLUMNS_IN_SELECT" #f dec)
("SQL_MAX_COLUMNS_IN_TABLE" #f dec)
("SQL_MAX_INDEX_SIZE" #f dec)
("SQL_MAXIMUM_INDEX_SIZE" #f dec)
("SQL_MAX_ROW_SIZE" #f dec)
("SQL_MAXIMUM_ROW_SIZE" #f dec)
("SQL_MAX_STATEMENT_LEN" #f dec)
("SQL_MAXIMUM_STATEMENT_LENGTH" #f dec)
("SQL_MAX_TABLES_IN_SELECT" #f dec)
("SQL_MAXIMUM_TABLES_IN_SELECT" #f dec)
("SQL_MAX_USER_NAME_LEN" #f dec)
("SQL_MAXIMUM_USER_NAME_LENGTH" #f dec)
("SQL_OJ_CAPABILITIES" #f dec)
("SQL_OUTER_JOIN_CAPABILITIES" #f dec)
("SQL_XOPEN_CLI_YEAR" #f dec)
("SQL_CURSOR_SENSITIVITY" #f dec)
("SQL_DESCRIBE_PARAMETER" #f dec)
("SQL_CATALOG_NAME" #f dec)
("SQL_COLLATION_SEQ" #f dec)
("SQL_MAX_IDENTIFIER_LEN" #f dec)
("SQL_MAXIMUM_IDENTIFIER_LENGTH" #f dec)
("SQL_AT_ADD_COLUMN" #f dec)
("SQL_AT_DROP_COLUMN" #f dec)
("SQL_AT_ADD_CONSTRAINT" #f dec)
";;; SQL_ASYNC_MODE values"
("SQL_AM_NONE" #f dec)
("SQL_AM_CONNECTION" #f dec)
("SQL_AM_STATEMENT" #f dec)
";;; SQL_CURSOR_COMMIT_BEHAVIOR values"
("SQL_CB_DELETE" #f dec)
("SQL_CB_CLOSE" #f dec)
("SQL_CB_PRESERVE" #f dec)
";;; SQL_FETCH_DIRECTION bitmasks"
("SQL_FD_FETCH_NEXT" #f dec)
("SQL_FD_FETCH_FIRST" #f dec)
("SQL_FD_FETCH_LAST" #f dec)
("SQL_FD_FETCH_PRIOR" #f dec)
("SQL_FD_FETCH_ABSOLUTE" #f dec)
("SQL_FD_FETCH_RELATIVE" #f dec)
";;; SQL_GETDATA_EXTENSIONS bitmasks"
("SQL_GD_ANY_COLUMN" #f dec)
("SQL_GD_ANY_ORDER" #f dec)
";;; SQL_IDENTIFIER_CASE values"
("SQL_IC_UPPER" #f dec)
("SQL_IC_LOWER" #f dec)
("SQL_IC_SENSITIVE" #f dec)
("SQL_IC_MIXED" #f dec)
";;; SQL_OJ_CAPABILITIES bitmasks"
("SQL_OJ_LEFT" #f dec)
("SQL_OJ_RIGHT" #f dec)
("SQL_OJ_FULL" #f dec)
("SQL_OJ_NESTED" #f dec)
("SQL_OJ_NOT_ORDERED" #f dec)
("SQL_OJ_INNER" #f dec)
("SQL_OJ_ALL_COMPARISON_OPS" #f dec)
("SQL_SCCO_READ_ONLY" #f dec)
("SQL_SCCO_LOCK" #f dec)
("SQL_SCCO_OPT_ROWVER" #f dec)
("SQL_SCCO_OPT_VALUES" #f dec)
("SQL_TC_NONE" #f dec)
("SQL_TC_DML" #f dec)
("SQL_TC_ALL" #f dec)
("SQL_TC_DDL_COMMIT" #f dec)
("SQL_TC_DDL_IGNORE" #f dec)
("SQL_TXN_READ_UNCOMMITTED" #f dec)
("SQL_TRANSACTION_READ_UNCOMMITTED" #f dec)
("SQL_TXN_READ_UNCOMMITTED" #f dec)
("SQL_TRANSACTION_READ_COMMITTED" #f dec)
("SQL_TXN_REPEATABLE_READ" #f dec)
("SQL_TRANSACTION_REPEATABLE_READ" #f dec)
("SQL_TXN_SERIALIZABLE" #f dec)
("SQL_TRANSACTION_SERIALIZABLE" #f dec)
("SQL_NC_HIGH" #f dec)
("SQL_NC_LOW" #f dec)))
(with-output-to-file "constants.c"
(lambda ()
(generate-constants odbc-constants)
(close-output-port (current-output-port))))

View File

@ -0,0 +1,11 @@
#include <stdio.h>
#include <sql.h>
int main(void)
{
/* do the trick */
#include "constants.c"
exit(0);
}