⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sybapi.h

📁 通用的数据库中间库
💻 H
字号:
// sybAPI.h
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SYBAPI_H__11EAA72A_EFF5_4944_8B1F_44973D30EF73__INCLUDED_)
#define AFX_SYBAPI_H__11EAA72A_EFF5_4944_8B1F_44973D30EF73__INCLUDED_

#include "SQLAPI.h"

// API header(s)
#ifdef LINUX
	#include "./syb_linux/ctpublic.h"
#endif
#ifdef WIN32
	#include "./syb_win32/ctpublic.h"
#endif

typedef
struct tagSybErrInfo
{
	CS_MSGNUM	msgnumber;
	CS_CHAR		msgstring[CS_MAX_MSG];
	CS_INT		line;
} SybErrInfo_t;

extern SQLAPI_API SybErrInfo_t *getSybErrInfo(CS_CONTEXT *context);

extern void AddSybSupport();
extern void ReleaseSybSupport();

typedef CS_RETCODE (CS_PUBLIC *ct_debug_t)(
	CS_CONTEXT *context,
	CS_CONNECTION *connection,
	CS_INT operation,
	CS_INT flag,
	CS_CHAR *filename,
	CS_INT fnamelen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_bind_t)(
	CS_COMMAND *cmd,
	CS_INT item,
	CS_DATAFMT *datafmt,
	CS_VOID *buf,
	CS_INT *outputlen,
	CS_SMALLINT *indicator
	);
typedef CS_RETCODE (CS_PUBLIC *ct_br_column_t)(
	CS_COMMAND *cmd,
	CS_INT colnum,
	CS_BROWSEDESC *browsedesc
	);
typedef CS_RETCODE (CS_PUBLIC *ct_br_table_t)(
	CS_COMMAND *cmd,
	CS_INT tabnum,
	CS_INT type,
	CS_VOID *buf,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_callback_t)(
	CS_CONTEXT *context,
	CS_CONNECTION *connection,
	CS_INT action,
	CS_INT type,
	CS_VOID *func
	);
typedef CS_RETCODE (CS_PUBLIC *ct_cancel_t)(
	CS_CONNECTION *connection,
	CS_COMMAND *cmd,
	CS_INT type
	);
typedef CS_RETCODE (CS_PUBLIC *ct_capability_t)(
	CS_CONNECTION *connection,
	CS_INT action,
	CS_INT type,
	CS_INT capability,
	CS_VOID *val
	);
typedef CS_RETCODE (CS_PUBLIC *ct_compute_info_t)(
	CS_COMMAND *cmd,
	CS_INT type,
	CS_INT colnum,
	CS_VOID *buf,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_close_t)(
	CS_CONNECTION *connection,
	CS_INT option
	);
typedef CS_RETCODE (CS_PUBLIC *ct_cmd_alloc_t)(
	CS_CONNECTION *connection,
	CS_COMMAND **cmdptr
	);
typedef CS_RETCODE (CS_PUBLIC *ct_cmd_drop_t)(
	CS_COMMAND *cmd
	);
typedef CS_RETCODE (CS_PUBLIC *ct_cmd_props_t)(
	CS_COMMAND *cmd,
	CS_INT action,
	CS_INT property,
	CS_VOID *buf,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_command_t)(
	CS_COMMAND *cmd,
	CS_INT type,
	CS_CHAR *buf,
	CS_INT buflen,
	CS_INT option
	);
typedef CS_RETCODE (CS_PUBLIC *ct_con_alloc_t)(
	CS_CONTEXT *context,
	CS_CONNECTION **connection
	);
typedef CS_RETCODE (CS_PUBLIC *ct_con_drop_t)(
	CS_CONNECTION *connection
	);
typedef CS_RETCODE (CS_PUBLIC *ct_con_props_t)(
	CS_CONNECTION *connection,
	CS_INT action,
	CS_INT property,
	CS_VOID *buf,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_connect_t)(
	CS_CONNECTION *connection,
	CS_CHAR *server_name,
	CS_INT snamelen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_config_t)(
	CS_CONTEXT *context,
	CS_INT action,
	CS_INT property,
	CS_VOID *buf,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_cursor_t)(
	CS_COMMAND *cmd,
	CS_INT type,
	CS_CHAR *name,
	CS_INT namelen,
	CS_CHAR *text,
	CS_INT tlen,
	CS_INT option
	);
typedef CS_RETCODE (CS_PUBLIC *ct_dyndesc_t)(
	CS_COMMAND *cmd,
	CS_CHAR *descriptor,
	CS_INT desclen,
	CS_INT operation,
	CS_INT idx,
	CS_DATAFMT *datafmt,
	CS_VOID *buffer,
	CS_INT buflen,
	CS_INT *copied,
	CS_SMALLINT *indicator
	);
typedef CS_RETCODE (CS_PUBLIC *ct_describe_t)(
	CS_COMMAND *cmd,
	CS_INT item,
	CS_DATAFMT *datafmt
	);
typedef CS_RETCODE (CS_PUBLIC *ct_diag_t)(
	CS_CONNECTION *connection,
	CS_INT operation,
	CS_INT type,
	CS_INT idx,
	CS_VOID *buffer
	);
typedef CS_RETCODE (CS_PUBLIC *ct_dynamic_t)(
	CS_COMMAND *cmd,
	CS_INT type,
	CS_CHAR *id,
	CS_INT idlen,
	CS_CHAR *buf,
	CS_INT buflen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_dynsqlda_t)(
	CS_COMMAND	*cmd,
	CS_INT		type,
	SQLDA		*dap,
	CS_INT		operation
	);
typedef CS_RETCODE (CS_PUBLIC *ct_exit_t)(
	CS_CONTEXT *context,
	CS_INT option
	);
typedef CS_RETCODE (CS_PUBLIC *ct_fetch_t)(
	CS_COMMAND *cmd,
	CS_INT type,
	CS_INT offset,
	CS_INT option,
	CS_INT *count
	);
typedef CS_RETCODE (CS_PUBLIC *ct_getformat_t)(
	CS_COMMAND *cmd,
	CS_INT colnum,
	CS_VOID *buf,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_keydata_t)(
	CS_COMMAND *cmd,
	CS_INT action,
	CS_INT colnum,
	CS_VOID *buffer,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_init_t)(
	CS_CONTEXT *context,
	CS_INT version
	);
typedef CS_RETCODE (CS_PUBLIC *ct_options_t)(
	CS_CONNECTION *connection,
	CS_INT action,
	CS_INT option,
	CS_VOID *param,
	CS_INT paramlen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_param_t)(
	CS_COMMAND *cmd,
	CS_DATAFMT *datafmt,
	CS_VOID *data,
	CS_INT datalen,
	int indicator
	);
typedef CS_RETCODE (CS_PUBLIC *ct_getloginfo_t)(
	CS_CONNECTION *connection,
	CS_LOGINFO **logptr
	);
typedef CS_RETCODE (CS_PUBLIC *ct_setloginfo_t)(
	CS_CONNECTION *connection,
	CS_LOGINFO *loginfo
	);
typedef CS_RETCODE (CS_PUBLIC *ct_recvpassthru_t)(
	CS_COMMAND *cmd,
	CS_VOID **recvptr
	);
typedef CS_RETCODE (CS_PUBLIC *ct_sendpassthru_t)(
	CS_COMMAND *cmd,
	CS_VOID *send_bufp
	);
typedef CS_RETCODE (CS_PUBLIC *ct_poll_t)(
	CS_CONTEXT *context,
	CS_CONNECTION *connection,
	CS_INT milliseconds,
	CS_CONNECTION **compconn,
	CS_COMMAND **compcmd,
	CS_INT *compid,
	CS_INT *compstatus
	);
typedef CS_RETCODE (CS_PUBLIC *ct_remote_pwd_t)(
	CS_CONNECTION *connection,
	CS_INT action,
	CS_CHAR *server_name,
	CS_INT snamelen,
	CS_CHAR *password,
	CS_INT pwdlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_results_t)(
	CS_COMMAND *cmd,
	CS_INT *result_type
	);
typedef CS_RETCODE (CS_PUBLIC *ct_res_info_t)(
	CS_COMMAND *cmd,
	CS_INT operation,
	CS_VOID *buf,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_send_t)(
	CS_COMMAND *cmd
	);
typedef CS_RETCODE (CS_PUBLIC *ct_get_data_t)(
	CS_COMMAND *cmd,
	CS_INT colnum,
	CS_VOID *buf,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_send_data_t)(
	CS_COMMAND *cmd,
	CS_VOID *buf,
	CS_INT buflen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_data_info_t)(
	CS_COMMAND *cmd,
	CS_INT action,
	CS_INT colnum,
	CS_IODESC *iodesc
	);
typedef CS_RETCODE (CS_PUBLIC *ct_wakeup_t)(
	CS_CONNECTION *connection,
	CS_COMMAND *cmd,
	CS_INT func_id,
	CS_RETCODE status
	);
typedef CS_RETCODE (CS_PUBLIC *ct_labels_t)(
	CS_CONNECTION   *connection,
	CS_INT          action,
	CS_CHAR         *labelname,
	CS_INT          namelen,
	CS_CHAR         *labelvalue,
	CS_INT          valuelen,
	CS_INT 		*outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_ds_lookup_t)(
	CS_CONNECTION		*connection,
	CS_INT			action,
	CS_INT			*reqidp,
	CS_DS_LOOKUP_INFO	*lookupinfo,
	CS_VOID			*userdatap
	);
typedef CS_RETCODE (CS_PUBLIC *ct_ds_dropobj_t)(
	CS_CONNECTION	*connection,
	CS_DS_OBJECT	*object 
	);
typedef CS_RETCODE (CS_PUBLIC *ct_ds_objinfo_t)(
	CS_DS_OBJECT	*objclass,
	CS_INT          action,
	CS_INT          objinfo,
	CS_INT          number,
	CS_VOID         *buffer,
	CS_INT          buflen,
	CS_INT          *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *ct_setparam_t)(
	CS_COMMAND *cmd,
	CS_DATAFMT *datafmt,
	CS_VOID *data,
	CS_INT *datalenp,
	CS_SMALLINT *indp
	);

typedef CS_RETCODE (CS_PUBLIC *cs_calc_t)(
	CS_CONTEXT *context,
	CS_INT op,
	CS_INT datatype,
	CS_VOID *var1,
	CS_VOID *var2,
	CS_VOID *dest
	);
typedef CS_RETCODE (CS_PUBLIC *cs_cmp_t)(
	CS_CONTEXT *context,
	CS_INT datatype,
	CS_VOID *var1,
	CS_VOID *var2,
	CS_INT *result
	);
typedef CS_RETCODE (CS_PUBLIC *cs_convert_t)(
	CS_CONTEXT *context,
	CS_DATAFMT *srcfmt,
	CS_VOID *srcdata,
	CS_DATAFMT *destfmt,
	CS_VOID *destdata,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *cs_will_convert_t)(
	CS_CONTEXT *context,
	CS_INT srctype,
	CS_INT desttype,
	CS_BOOL *result
	);
typedef CS_RETCODE (CS_PUBLIC *cs_set_convert_t)(
	CS_CONTEXT *context,
	CS_INT	action,
	CS_INT srctype,
	CS_INT desttype,
	CS_CONV_FUNC *buffer
	);
typedef CS_RETCODE (CS_PUBLIC *cs_setnull_t)(
	CS_CONTEXT *context,
	CS_DATAFMT *datafmt,
	CS_VOID *buf,
	CS_INT buflen
	);
typedef CS_RETCODE (CS_PUBLIC *cs_config_t)(
	CS_CONTEXT *context,
	CS_INT action,
	CS_INT property,
	CS_VOID *buf,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *cs_ctx_alloc_t)(
	CS_INT version,
	CS_CONTEXT **outptr
	);
typedef CS_RETCODE (CS_PUBLIC *cs_ctx_drop_t)(
	CS_CONTEXT *context
	);
typedef CS_RETCODE (CS_PUBLIC *cs_ctx_global_t)(
	CS_INT version,
	CS_CONTEXT **outptr
	);
typedef CS_RETCODE (CS_PUBLIC *cs_objects_t)(
	CS_CONTEXT 	*context,
	CS_INT		action,
	CS_OBJNAME	*objname,
	CS_OBJDATA	*objdata
	);
typedef CS_RETCODE (CS_PUBLIC *cs_diag_t)(
	CS_CONTEXT *context,
	CS_INT operation,
	CS_INT type,
	CS_INT idx,
	CS_VOID *buffer
	);
typedef CS_RETCODE (CS_PUBLIC *cs_dt_crack_t)(
	CS_CONTEXT *context,
	CS_INT datetype,
	CS_VOID *dateval,
	CS_DATEREC *daterec
	);
typedef CS_RETCODE (CS_PUBLIC *cs_dt_info_t)(
	CS_CONTEXT *context,
	CS_INT action,
	CS_LOCALE *locale,
	CS_INT type,
	CS_INT item,
	CS_VOID *buffer,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *cs_locale_t)(
	CS_CONTEXT *context,
	CS_INT action,
	CS_LOCALE *locale,
	CS_INT type,
	CS_CHAR *buffer,
	CS_INT buflen,
	CS_INT *outlen
	);
typedef CS_RETCODE (CS_PUBLIC *cs_loc_alloc_t)(
	CS_CONTEXT *context,
	CS_LOCALE **loc_pointer
	);
typedef CS_RETCODE (CS_PUBLIC *cs_loc_drop_t)(
	CS_CONTEXT *context,
	CS_LOCALE *locale
	);
#ifdef CS__INTERNAL_STRUCTS
typedef CS_RETCODE (CS_VARARGS *cs_strbuild_t)(
	CS_CONTEXT *context,
	...
	);
#else
typedef CS_RETCODE (CS_VARARGS *cs_strbuild_t)(
	CS_CONTEXT *context,
	CS_CHAR *buf,
	CS_INT buflen,
	CS_INT *outlen,
	CS_CHAR *text,
	CS_INT textlen,
	...
	);
#endif /* CS__INTERNAL_STRUCTS */
typedef CS_RETCODE (CS_PUBLIC *cs_strcmp_t)(
	CS_CONTEXT *context,
	CS_LOCALE *locale,
	CS_INT type,
	CS_CHAR *str1,
	CS_INT len1,
	CS_CHAR *str2,
	CS_INT len2,
	CS_INT *result
	);
typedef CS_RETCODE (CS_PUBLIC *cs_time_t)(
	CS_CONTEXT *context,
	CS_LOCALE *locale,
	CS_VOID	 *buf,
	CS_INT	buflen,
	CS_INT  *outlen,
	CS_DATEREC *drec
	);
typedef CS_RETCODE (CS_PUBLIC *cs_manage_convert_t)(
	CS_CONTEXT	*context,
	CS_INT		action,
	CS_INT		srctype, 
	CS_CHAR		*srcname,
	CS_INT		srcnamelen,
	CS_INT		desttype,
	CS_CHAR		*destname,
	CS_INT		destnamelen,
	CS_INT		*maxmultiplier,
	CS_CONV_FUNC	*func
	);
typedef CS_RETCODE (CS_PUBLIC *cs_conv_mult_t)(
	CS_CONTEXT	*context,
	CS_LOCALE       *srcloc,
	CS_LOCALE       *destloc,
	CS_INT          *multiplier
	);

// API declarations
class sybAPI : public saAPI
{
public:
	sybAPI();

	ct_debug_t	ct_debug;
	ct_bind_t	ct_bind;
	ct_br_column_t	ct_br_column;
	ct_br_table_t	ct_br_table;
	ct_callback_t	ct_callback;
	ct_cancel_t	ct_cancel;
	ct_capability_t	ct_capability;
	ct_compute_info_t	ct_compute_info;
	ct_close_t	ct_close;
	ct_cmd_alloc_t	ct_cmd_alloc;
	ct_cmd_drop_t	ct_cmd_drop;
	ct_cmd_props_t	ct_cmd_props;
	ct_command_t	ct_command;
	ct_con_alloc_t	ct_con_alloc;
	ct_con_drop_t	ct_con_drop;
	ct_con_props_t	ct_con_props;
	ct_connect_t	ct_connect;
	ct_config_t	ct_config;
	ct_cursor_t	ct_cursor;
	ct_dyndesc_t	ct_dyndesc;
	ct_describe_t	ct_describe;
	ct_diag_t	ct_diag;
	ct_dynamic_t	ct_dynamic;
	ct_dynsqlda_t	ct_dynsqlda;
	ct_exit_t	ct_exit;
	ct_fetch_t	ct_fetch;
	ct_getformat_t	ct_getformat;
	ct_keydata_t	ct_keydata;
	ct_init_t	ct_init;
	ct_options_t	ct_options;
	ct_param_t	ct_param;
	ct_getloginfo_t	ct_getloginfo;
	ct_setloginfo_t	ct_setloginfo;
	ct_recvpassthru_t	ct_recvpassthru;
	ct_sendpassthru_t	ct_sendpassthru;
	ct_poll_t	ct_poll;
	ct_remote_pwd_t	ct_remote_pwd;
	ct_results_t	ct_results;
	ct_res_info_t	ct_res_info;
	ct_send_t	ct_send;
	ct_get_data_t	ct_get_data;
	ct_send_data_t	ct_send_data;
	ct_data_info_t	ct_data_info;
	ct_wakeup_t	ct_wakeup;
	ct_labels_t	ct_labels;
	ct_ds_lookup_t	ct_ds_lookup;
	ct_ds_dropobj_t	ct_ds_dropobj;
	ct_ds_objinfo_t	ct_ds_objinfo;
	ct_setparam_t	ct_setparam;

	cs_calc_t	cs_calc;
	cs_cmp_t	cs_cmp;
	cs_convert_t	cs_convert;
	cs_will_convert_t	cs_will_convert;
	cs_set_convert_t	cs_set_convert;
	cs_setnull_t	cs_setnull;
	cs_config_t	cs_config;
	cs_ctx_alloc_t	cs_ctx_alloc;
	cs_ctx_drop_t	cs_ctx_drop;
	cs_ctx_global_t	cs_ctx_global;
	cs_objects_t	cs_objects;
	cs_diag_t	cs_diag;
	cs_dt_crack_t	cs_dt_crack;
	cs_dt_info_t	cs_dt_info;
	cs_locale_t	cs_locale;
	cs_loc_alloc_t	cs_loc_alloc;
	cs_loc_drop_t	cs_loc_drop;
	cs_strbuild_t	cs_strbuild;
	cs_strcmp_t	cs_strcmp;
	cs_time_t	cs_time;
	cs_manage_convert_t	cs_manage_convert;
	cs_conv_mult_t	cs_conv_mult;
};

class SQLAPI_API sybConnectionHandles : public saConnectionHandles
{
public:
	sybConnectionHandles();

	CS_CONTEXT *m_context;
	CS_CONNECTION *m_connection;
};

class SQLAPI_API sybCommandHandles : public saCommandHandles
{
public:
	sybCommandHandles();

	CS_COMMAND *m_command;
};

class SQLAPI_API sybExternalConnection
{
	bool m_bAttached;

	SAConnection *m_pCon;
	CS_CONTEXT *m_contextSaved;
	CS_CONNECTION *m_connectionSaved;

	CS_CONTEXT *m_context;
	CS_CONNECTION *m_connection;
	CS_VOID	*m_ExternalContextClientMsg_cb;
	CS_VOID	*m_ExternalContextServerMsg_cb;
	CS_VOID	*m_ExternalConnectionClientMsg_cb;
	CS_VOID	*m_ExternalConnectionServerMsg_cb;
	CS_INT m_nExternalUserDataLen;
	CS_VOID *m_pExternalUserData;
	CS_INT m_nExternalUserDataAllocated;
	SybErrInfo_t m_SybErrInfo;

public:
	sybExternalConnection(
		SAConnection *pCon,
		CS_CONTEXT *context,
		CS_CONNECTION *connection);
	void Attach();
	void Detach();
	~sybExternalConnection();
};



extern sybAPI g_sybAPI;

#endif // !defined(AFX_SYBAPI_H__11EAA72A_EFF5_4944_8B1F_44973D30EF73__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -