////////////////////////////////////////////////////////////////////// // slAPI.h ////////////////////////////////////////////////////////////////////// #if !defined(__SLAPI_H__) #define __SLAPI_H__ #include #include extern void AddSQLite3Support(const SAConnection * pCon); extern void ReleaseSQLite3Support(); typedef int (*sqlite3_open_t)(const void *filename, sqlite3 **ppDb); typedef const char * (*sqlite3_libversion_t)(void); typedef int (*sqlite3_libversion_number_t)(void); typedef int (*sqlite3_threadsafe_t)(void); typedef int (*sqlite3_close_t)(sqlite3 *); typedef int (*sqlite3_extended_result_codes_t)(sqlite3*, int onoff); typedef sqlite3_int64 (*sqlite3_last_insert_rowid_t)(sqlite3*); typedef int (*sqlite3_changes_t)(sqlite3*); typedef int (*sqlite3_total_changes_t)(sqlite3*); typedef void (*sqlite3_interrupt_t)(sqlite3*); typedef int (*sqlite3_complete_t)(const char *sql); typedef int (*sqlite3_complete16_t)(const void *sql); typedef int (*sqlite3_busy_handler_t)(sqlite3*, int(*)(void*,int), void*); typedef int (*sqlite3_busy_timeout_t)(sqlite3*, int ms); typedef void (*sqlite3_free_table_t)(char **result); typedef char *(*sqlite3_mprintf_t)(const char*,...); typedef char *(*sqlite3_vmprintf_t)(const char*, va_list); typedef char *(*sqlite3_snprintf_t)(int,char*,const char*, ...); typedef void *(*sqlite3_malloc_t)(int); typedef void *(*sqlite3_realloc_t)(void*, int); typedef void (*sqlite3_free_t)(void*); typedef sqlite3_int64 (*sqlite3_memory_used_t)(void); typedef sqlite3_int64 (*sqlite3_memory_highwater_t)(int resetFlag); typedef void *(*sqlite3_trace_t)(sqlite3*, void(*xTrace)(void*,const char*), void*); typedef void (*sqlite3_progress_handler_t)(sqlite3*, int, int(*)(void*), void*); typedef int (*sqlite3_errcode_t)(sqlite3 *db); typedef const void *(*sqlite3_errmsg_t)(sqlite3*); typedef int (*sqlite3_bind_blob_t)(sqlite3_stmt*, int, const void*, int n, void(*)(void*)); typedef int (*sqlite3_bind_double_t)(sqlite3_stmt*, int, double); typedef int (*sqlite3_bind_int_t)(sqlite3_stmt*, int, int); typedef int (*sqlite3_bind_int64_t)(sqlite3_stmt*, int, sqlite3_int64); typedef int (*sqlite3_bind_null_t)(sqlite3_stmt*, int); typedef int (*sqlite3_bind_text_t)(sqlite3_stmt*, int, const void*, int n, void(*)(void*)); typedef int (*sqlite3_bind_value_t)(sqlite3_stmt*, int, const sqlite3_value*); typedef int (*sqlite3_bind_zeroblob_t)(sqlite3_stmt*, int, int n); typedef int (*sqlite3_bind_parameter_count_t)(sqlite3_stmt*); typedef const char *(*sqlite3_bind_parameter_name_t)(sqlite3_stmt*, int); typedef int (*sqlite3_bind_parameter_index_t)(sqlite3_stmt*, const char *zName); typedef int (*sqlite3_clear_bindings_t)(sqlite3_stmt*); typedef int (*sqlite3_column_count_t)(sqlite3_stmt *pStmt); typedef const void *(*sqlite3_column_name_t)(sqlite3_stmt*, int N); typedef const char *(*sqlite3_column_database_name_t)(sqlite3_stmt*,int); typedef const void *(*sqlite3_column_database_name16_t)(sqlite3_stmt*,int); typedef const char *(*sqlite3_column_table_name_t)(sqlite3_stmt*,int); typedef const void *(*sqlite3_column_table_name16_t)(sqlite3_stmt*,int); typedef const char *(*sqlite3_column_origin_name_t)(sqlite3_stmt*,int); typedef const void *(*sqlite3_column_origin_name16_t)(sqlite3_stmt*,int); typedef const void *(*sqlite3_column_decltype_t)(sqlite3_stmt *, int); typedef int (*sqlite3_step_t)(sqlite3_stmt*); typedef int (*sqlite3_data_count_t)(sqlite3_stmt *pStmt); typedef const void *(*sqlite3_column_blob_t)(sqlite3_stmt*, int iCol); typedef int (*sqlite3_column_bytes_t)(sqlite3_stmt*, int iCol); typedef double (*sqlite3_column_double_t)(sqlite3_stmt*, int iCol); typedef int (*sqlite3_column_int_t)(sqlite3_stmt*, int iCol); typedef sqlite3_int64 (*sqlite3_column_int64_t)(sqlite3_stmt*, int iCol); typedef const void *(*sqlite3_column_text_t)(sqlite3_stmt*, int iCol); typedef int (*sqlite3_column_type_t)(sqlite3_stmt*, int iCol); typedef sqlite3_value *(*sqlite3_column_value_t)(sqlite3_stmt*, int iCol); typedef int (*sqlite3_finalize_t)(sqlite3_stmt *pStmt); typedef int (*sqlite3_reset_t)(sqlite3_stmt *pStmt); typedef int (*sqlite3_aggregate_count_t)(sqlite3_context*); typedef int (*sqlite3_expired_t)(sqlite3_stmt*); typedef int (*sqlite3_transfer_bindings_t)(sqlite3_stmt*, sqlite3_stmt*); typedef int (*sqlite3_global_recover_t)(void); typedef void (*sqlite3_thread_cleanup_t)(void); typedef const void *(*sqlite3_value_blob_t)(sqlite3_value*); typedef int (*sqlite3_value_bytes_t)(sqlite3_value*); typedef int (*sqlite3_value_bytes16_t)(sqlite3_value*); typedef double (*sqlite3_value_double_t)(sqlite3_value*); typedef int (*sqlite3_value_int_t)(sqlite3_value*); typedef sqlite3_int64 (*sqlite3_value_int64_t)(sqlite3_value*); typedef const unsigned char *(*sqlite3_value_text_t)(sqlite3_value*); typedef const void *(*sqlite3_value_text16_t)(sqlite3_value*); typedef const void *(*sqlite3_value_text16le_t)(sqlite3_value*); typedef const void *(*sqlite3_value_text16be_t)(sqlite3_value*); typedef int (*sqlite3_value_type_t)(sqlite3_value*); typedef int (*sqlite3_value_numeric_type_t)(sqlite3_value*); typedef void *(*sqlite3_aggregate_context_t)(sqlite3_context*, int nBytes); typedef void *(*sqlite3_user_data_t)(sqlite3_context*); typedef void *(*sqlite3_get_auxdata_t)(sqlite3_context*, int); typedef void (*sqlite3_set_auxdata_t)(sqlite3_context*, int, void*, void (*)(void*)); typedef void (*sqlite3_result_blob_t)(sqlite3_context*, const void*, int, void(*)(void*)); typedef void (*sqlite3_result_double_t)(sqlite3_context*, double); typedef void (*sqlite3_result_error_t)(sqlite3_context*, const char*, int); typedef void (*sqlite3_result_error16_t)(sqlite3_context*, const void*, int); typedef void (*sqlite3_result_error_toobig_t)(sqlite3_context*); typedef void (*sqlite3_result_error_nomem_t)(sqlite3_context*); typedef void (*sqlite3_result_int_t)(sqlite3_context*, int); typedef void (*sqlite3_result_int64_t)(sqlite3_context*, sqlite3_int64); typedef void (*sqlite3_result_null_t)(sqlite3_context*); typedef void (*sqlite3_result_text_t)(sqlite3_context*, const char*, int, void(*)(void*)); typedef void (*sqlite3_result_text16_t)(sqlite3_context*, const void*, int, void(*)(void*)); typedef void (*sqlite3_result_text16le_t)(sqlite3_context*, const void*, int,void(*)(void*)); typedef void (*sqlite3_result_text16be_t)(sqlite3_context*, const void*, int,void(*)(void*)); typedef void (*sqlite3_result_value_t)(sqlite3_context*, sqlite3_value*); typedef void (*sqlite3_result_zeroblob_t)(sqlite3_context*, int n); typedef int (*sqlite3_sleep_t)(int); typedef int (*sqlite3_get_autocommit_t)(sqlite3*); typedef sqlite3 *(*sqlite3_db_handle_t)(sqlite3_stmt*); typedef void *(*sqlite3_commit_hook_t)(sqlite3*, int(*)(void*), void*); typedef void *(*sqlite3_rollback_hook_t)(sqlite3*, void(*)(void *), void*); typedef int (*sqlite3_enable_shared_cache_t)(int); typedef int (*sqlite3_release_memory_t)(int); typedef void (*sqlite3_soft_heap_limit_t)(int); typedef int(*sqlite3_load_extension_t)( sqlite3 *db, /* Load the extension into this database connection */ const char *zFile, /* Name of the shared library containing extension */ const char *zProc, /* Entry point. Derived from zFile if 0 */ char **pzErrMsg /* Put error message here if not 0 */ ); typedef int (*sqlite3_enable_load_extension_t)(sqlite3 *db, int onoff); typedef int (*sqlite3_auto_extension_t)(void *xEntryPoint); typedef void (*sqlite3_reset_auto_extension_t)(void); typedef int (*sqlite3_declare_vtab_t)(sqlite3*, const char *zCreateTable); typedef int (*sqlite3_overload_function_t)(sqlite3*, const char *zFuncName, int nArg); typedef int (*sqlite3_blob_close_t)(sqlite3_blob *); typedef int (*sqlite3_blob_bytes_t)(sqlite3_blob *); typedef int (*sqlite3_blob_read_t)(sqlite3_blob *, void *z, int n, int iOffset); typedef int (*sqlite3_blob_write_t)(sqlite3_blob *, const void *z, int n, int iOffset); typedef sqlite3_vfs *(*sqlite3_vfs_find_t)(const char *zVfsName); typedef int (*sqlite3_vfs_register_t)(sqlite3_vfs*, int makeDflt); typedef int (*sqlite3_vfs_unregister_t)(sqlite3_vfs*); typedef sqlite3_mutex *(*sqlite3_mutex_alloc_t)(int); typedef void (*sqlite3_mutex_free_t)(sqlite3_mutex*); typedef void (*sqlite3_mutex_enter_t)(sqlite3_mutex*); typedef int (*sqlite3_mutex_try_t)(sqlite3_mutex*); typedef void (*sqlite3_mutex_leave_t)(sqlite3_mutex*); typedef int (*sqlite3_mutex_held_t)(sqlite3_mutex*); typedef int (*sqlite3_mutex_notheld_t)(sqlite3_mutex*); typedef int (*sqlite3_file_control_t)(sqlite3*, const char *zDbName, int op, void*); typedef int (*sqlite3_exec_t)( sqlite3*, /* An open database */ const char *sql, /* SQL to be evaluted */ int (*callback)(void*,int,char**,char**), /* Callback function */ void *, /* 1st argument to callback */ char **errmsg /* Error msg written here */ ); typedef int (*sqlite3_prepare_t)( sqlite3 *db, /* Database handle */ const void *zSql, /* SQL statement, UTF-16 encoded */ int nByte, /* Maximum length of zSql in bytes. */ sqlite3_stmt **ppStmt, /* OUT: Statement handle */ const void **pzTail /* OUT: Pointer to unused portion of zSql */ ); typedef int (*sqlite3_open_v2_t)(const char *filename, sqlite3 **ppDb, int flags, const char *zVfs); typedef sqlite3_backup *(*sqlite3_backup_init_t)( sqlite3 *pDest, /* Destination database handle */ const char *zDestName, /* Destination database name */ sqlite3 *pSource, /* Source database handle */ const char *zSourceName /* Source database name */ ); typedef int (*sqlite3_backup_step_t)(sqlite3_backup *p, int nPage); typedef int (*sqlite3_backup_finish_t)(sqlite3_backup *p); typedef int (*sqlite3_backup_remaining_t)(sqlite3_backup *p); typedef int (*sqlite3_backup_pagecount_t)(sqlite3_backup *p); typedef int (*sqlite3_table_column_metadata_t)( sqlite3 *db, /* Connection handle */ const char *zDbName, /* Database name or NULL */ const char *zTableName, /* Table name */ const char *zColumnName, /* Column name */ char const **pzDataType, /* OUTPUT: Declared data type */ char const **pzCollSeq, /* OUTPUT: Collation sequence name */ int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */ int *pPrimaryKey, /* OUTPUT: True if column part of PK */ int *pAutoinc /* OUTPUT: True if column is auto-increment */ ); typedef void *(*sqlite3_update_hook_t)( sqlite3*, void(*)(void *,int ,char const *,char const *,sqlite3_int64), void* ); typedef int(*sqlite3_key_t)(sqlite3 *db, const void *pKey, int nKey); typedef int(*sqlite3_rekey_t)(sqlite3 *db, const void *pKey, int nKey); // API declarations class SQLAPI_API sl3API : public saAPI { public: sl3API(); sqlite3_open_t sqlite3_open; sqlite3_libversion_t sqlite3_libversion; sqlite3_libversion_number_t sqlite3_libversion_number; sqlite3_errcode_t sqlite3_errcode; sqlite3_errmsg_t sqlite3_errmsg; sqlite3_close_t sqlite3_close; sqlite3_exec_t sqlite3_exec; sqlite3_prepare_t sqlite3_prepare; sqlite3_bind_parameter_index_t sqlite3_bind_parameter_index; sqlite3_column_count_t sqlite3_column_count; sqlite3_column_name_t sqlite3_column_name; sqlite3_column_type_t sqlite3_column_type; sqlite3_column_bytes_t sqlite3_column_bytes; sqlite3_step_t sqlite3_step; sqlite3_db_handle_t sqlite3_db_handle; sqlite3_reset_t sqlite3_reset; sqlite3_clear_bindings_t sqlite3_clear_bindings; sqlite3_finalize_t sqlite3_finalize; sqlite3_interrupt_t sqlite3_interrupt; sqlite3_changes_t sqlite3_changes; sqlite3_column_int64_t sqlite3_column_int64; sqlite3_column_double_t sqlite3_column_double; sqlite3_column_blob_t sqlite3_column_blob; sqlite3_column_text_t sqlite3_column_text; sqlite3_bind_blob_t sqlite3_bind_blob; sqlite3_bind_double_t sqlite3_bind_double; sqlite3_bind_int_t sqlite3_bind_int; sqlite3_bind_int64_t sqlite3_bind_int64; sqlite3_bind_null_t sqlite3_bind_null; sqlite3_bind_text_t sqlite3_bind_text; sqlite3_busy_handler_t sqlite3_busy_handler; sqlite3_busy_timeout_t sqlite3_busy_timeout; sqlite3_threadsafe_t sqlite3_threadsafe; sqlite3_last_insert_rowid_t sqlite3_last_insert_rowid; sqlite3_column_decltype_t sqlite3_column_decltype; sqlite3_open_v2_t sqlite3_open_v2; sqlite3_backup_init_t sqlite3_backup_init; sqlite3_backup_step_t sqlite3_backup_step; sqlite3_backup_finish_t sqlite3_backup_finish; sqlite3_backup_remaining_t sqlite3_backup_remaining; sqlite3_backup_pagecount_t sqlite3_backup_pagecount; sqlite3_table_column_metadata_t sqlite3_table_column_metadata; sqlite3_column_value_t sqlite3_column_value; sqlite3_value_type_t sqlite3_value_type; sqlite3_update_hook_t sqlite3_update_hook; sqlite3_load_extension_t sqlite3_load_extension; sqlite3_enable_load_extension_t sqlite3_enable_load_extension; sqlite3_key_t sqlite3_key; sqlite3_rekey_t sqlite3_rekey; sqlite3_free_t sqlite3_free; sqlite3_memory_used_t sqlite3_memory_used; sqlite3_memory_highwater_t sqlite3_memory_highwater; }; class SQLAPI_API sl3ConnectionHandles : public saConnectionHandles { public: sl3ConnectionHandles(); sqlite3 *pDb; }; class SQLAPI_API sl3CommandHandles : public saCommandHandles { public: sl3CommandHandles(); sqlite3_stmt *pStmt; }; extern sl3API g_sl3API; #endif //__SLAPI_H__