racket/src/srpersist/srptypes.h
2005-05-27 21:53:51 +00:00

195 lines
5.9 KiB
C

/* srptypes.h -- types for SisterPersist */
/* declare Scheme types for those SQL types that have
no existing Scheme analog
*/
extern Scheme_Type sql_date_type;
extern Scheme_Type sql_decimal_type;
extern Scheme_Type sql_pointer_type;
extern Scheme_Type sql_time_type;
extern Scheme_Type sql_timestamp_type;
extern Scheme_Type sql_return_type;
extern Scheme_Type sql_henv_type;
extern Scheme_Type sql_hdbc_type;
extern Scheme_Type sql_hstmt_type;
extern Scheme_Type sql_hdesc_type;
extern Scheme_Type sql_boxed_uint_type;
extern Scheme_Type sql_buffer_type;
extern Scheme_Type sql_length_type;
extern Scheme_Type sql_indicator_type;
extern Scheme_Type sql_row_status_type;
extern Scheme_Type sql_array_status_type;
extern Scheme_Type sql_binding_offset_type;
extern Scheme_Type sql_rows_processed_type;
extern Scheme_Type sql_octet_length_type;
extern Scheme_Type sql_op_parms_type;
extern Scheme_Type sql_guid_type;
extern Scheme_Type sql_paramlength_type;
typedef struct _sql_henv_ {
Scheme_Type type;
SQLHENV henv;
} SRP_SQL_HENV;
typedef struct _sql_hdbc_ {
Scheme_Type type;
SQLHDBC hdbc;
} SRP_SQL_HDBC;
typedef struct _sql_hstmt_ {
Scheme_Type type;
SQLHDBC hstmt;
} SRP_SQL_HSTMT;
#if (ODBCVER >= 0x300)
typedef enum _desctype_ {
APD,ARD,IPD,IRD,EXPLICIT
} DESCTYPE;
typedef struct _sql_hdesc_ {
Scheme_Type type;
DESCTYPE descType;
SQLHDESC hdesc;
} SRP_SQL_HDESC;
#endif
typedef struct _sql_boxed_uint_ {
Scheme_Type type;
SQLUINTEGER *pointer;
} SRP_SQL_BOXED_UINT;
typedef struct _sql_buffer_ {
Scheme_Type type;
void *storage;
SQLSMALLINT CDataType;
long width;
long arrayLength;
int eltSize;
} SRP_SQL_BUFFER;
typedef struct _sql_length_ {
Scheme_Type type;
SQLINTEGER value;
} SRP_SQL_LENGTH;
typedef struct _sql_indicator_ {
Scheme_Type type;
long arrayLength;
SQLINTEGER *storage;
} SRP_SQL_INDICATOR;
typedef struct _sql_row_status_ {
Scheme_Type type;
BOOL usesSchemeStorage;
SQLUINTEGER numRows;
SQLUSMALLINT *values;
} SRP_SQL_ROW_STATUS;
#if (ODBCVER >= 0x300)
typedef struct _sql_array_status_ {
Scheme_Type type;
SQLHDESC hdesc;
DESCTYPE descType;
SQLUSMALLINT *values;
} SRP_SQL_ARRAY_STATUS;
#endif
typedef struct _sql_binding_offset_ {
Scheme_Type type;
SQLINTEGER *val;
} SRP_SQL_BINDING_OFFSET;
typedef struct _sql_rows_processed_ {
Scheme_Type type;
SQLUINTEGER *val;
} SRP_SQL_ROWS_PROCESSED;
typedef struct _sql_octet_length_ {
Scheme_Type type;
SQLINTEGER *val;
} SRP_SQL_OCTET_LENGTH;
typedef struct _sql_op_parms_ {
Scheme_Type type;
SQLUINTEGER paramSetSize;
SQLUSMALLINT *values;
} SRP_SQL_OP_PARMS;
#if (ODBCVER >= 0x0350)
typedef struct _sql_guid_ {
Scheme_Type type;
SQLGUID guid;
} SRP_SQL_GUID;
#endif
#define SQL_HENVP(o) (!SCHEME_INTP(o) && o->type == sql_henv_type)
#define SQL_HENV_VAL(o) (((SRP_SQL_HENV *)o)->henv)
#define SQL_HDBCP(o) (!SCHEME_INTP(o) && o->type == sql_hdbc_type)
#define SQL_HDBC_VAL(o) (((SRP_SQL_HDBC *)o)->hdbc)
#define SQL_HSTMTP(o) (!SCHEME_INTP(o) && o->type == sql_hstmt_type)
#define SQL_HSTMT_VAL(o) (((SRP_SQL_HSTMT *)o)->hstmt)
#define SQL_HDESCP(o) (!SCHEME_INTP(o) && o->type == sql_hdesc_type)
#define SQL_HDESC_VAL(o) (((SRP_SQL_HDESC *)o)->hdesc)
#define SQL_HDESC_DESCTYPE(o) (((SRP_SQL_HDESC *)o)->descType)
#define SQL_BUFFERP(o) (!SCHEME_INTP(o) && o->type == sql_buffer_type)
#define SQL_BUFFER_VAL(o) (((SRP_SQL_BUFFER *)o)->storage)
#define SQL_BUFFER_WIDTH(o) (((SRP_SQL_BUFFER *)o)->width)
#define SQL_BUFFER_ARRAYLEN(o) (((SRP_SQL_BUFFER *)o)->arrayLength)
#define SQL_BUFFER_ELTSIZE(o) (((SRP_SQL_BUFFER *)o)->eltSize)
#define SQL_BUFFER_LEN(o) (SQL_BUFFER_WIDTH(o) * SQL_BUFFER_ARRAYLEN(o) * SQL_BUFFER_ELTSIZE(o))
#define SQL_BUFFER_CTYPE(o) (((SRP_SQL_BUFFER *)o)->CDataType)
#define SQL_LENGTHP(o) (!SCHEME_INTP(o) && o->type == sql_length_type)
#define SQL_LENGTH_VAL(o) (((SRP_SQL_LENGTH *)o)->value)
#define SQL_INDICATORP(o) (!SCHEME_INTP(o) && o->type == sql_indicator_type)
#define SQL_INDICATOR_VAL(o) (((SRP_SQL_INDICATOR *)o)->storage)
#define SQL_INDICATOR_LEN(o) (((SRP_SQL_INDICATOR *)o)->arrayLength)
#define SQL_OP_PARMSP(o) (!SCHEME_INTP(o) && o->type == sql_op_parms_type)
#define SQL_OP_PARMS_LEN(o) (((SRP_SQL_OP_PARMS *)o)->paramSetSize)
#define SQL_OP_PARMS_VAL(o) (((SRP_SQL_OP_PARMS *)o)->values)
#define SQL_AP_DESCP(o) (!SCHEME_INTP(o) && o->type == sql_ap_desc_type)
#define SQL_AP_DESC_VAL(o) (((SRP_SQL_AP_DESC *)o)->handle)
#define SQL_AR_DESCP(o) (!SCHEME_INTP(o) && o->type == sql_ar_desc_type)
#define SQL_AR_DESC_VAL(o) (((SRP_SQL_AR_DESC *)o)->handle)
#define SQL_IP_DESCP(o) (!SCHEME_INTP(o) && o->type == sql_ip_desc_type)
#define SQL_IP_DESC_VAL(o) (((SRP_SQL_IP_DESC *)o)->handle)
#define SQL_IR_DESCP(o) (!SCHEME_INTP(o) && o->type == sql_ir_desc_type)
#define SQL_IR_DESC_VAL(o) (((SRP_SQL_IR_DESC *)o)->handle)
#define SQL_BOXED_UINTP(o) (!SCHEME_INTP(o) && o->type == sql_boxed_uint_type)
#define SQL_BOXED_UINT_VAL(o) (((SRP_SQL_BOXED_UINT *)o)->pointer)
#define SQL_ROW_STATUSP(o) (!SCHEME_INTP(o) && o->type == sql_row_status_type)
#define SQL_ROW_STATUS_VAL(o) (((SRP_SQL_ROW_STATUS *)o)->values)
#define SQL_ROW_STATUS_LEN(o) (((SRP_SQL_ROW_STATUS *)o)->numRows)
#define SQL_ARRAY_STATUSP(o) (!SCHEME_INTP(o) && o->type == sql_array_status_type)
#define SQL_ARRAY_STATUS_VAL(o) (((SRP_SQL_ARRAY_STATUS *)o)->values)
#define SQL_ARRAY_STATUS_HDESC(o) (((SRP_SQL_ARRAY_STATUS *)o)->hdesc)
#define SQL_ARRAY_STATUS_DESCTYPE(o) (((SRP_SQL_ARRAY_STATUS *)o)->descType)
#define SQL_BINDING_OFFSETP(o) (!SCHEME_INTP(o) && o->type == sql_binding_offset_type)
#define SQL_BINDING_OFFSET_VAL(o) (((SRP_SQL_BINDING_OFFSET *)o)->val)
#define SQL_ROWS_PROCESSEDP(o) (!SCHEME_INTP(o) && o->type == sql_rows_processed_type)
#define SQL_ROWS_PROCESSED_VAL(o) (((SRP_SQL_ROWS_PROCESSED *)o)->val)
#define SQL_OCTET_LENGTHP(o) (!SCHEME_INTP(o) && o->type == sql_octet_length_type)
#define SQL_OCTET_LENGTH_VAL(o) (((SRP_SQL_OCTET_LENGTH *)o)->val)
#define SQL_BUFFER_UNDEFINED_LEN (LONG_MIN)