|
version 1.2, 2012/10/12 08:22:47
|
version 1.3, 2017/02/13 16:52:50
|
|
Line 15
|
Line 15
|
| ** as extensions by SQLite should #include this file instead of |
** as extensions by SQLite should #include this file instead of |
| ** sqlite3.h. |
** sqlite3.h. |
| */ |
*/ |
| #ifndef _SQLITE3EXT_H_ | #ifndef SQLITE3EXT_H |
| #define _SQLITE3EXT_H_ | #define SQLITE3EXT_H |
| #include "sqlite3.h" |
#include "sqlite3.h" |
| |
|
| typedef struct sqlite3_api_routines sqlite3_api_routines; |
|
| |
|
| /* |
/* |
| ** The following structure holds pointers to all of the SQLite API |
** The following structure holds pointers to all of the SQLite API |
| ** routines. |
** routines. |
|
Line 28 typedef struct sqlite3_api_routines sqlite3_api_routin
|
Line 26 typedef struct sqlite3_api_routines sqlite3_api_routin
|
| ** WARNING: In order to maintain backwards compatibility, add new |
** WARNING: In order to maintain backwards compatibility, add new |
| ** interfaces to the end of this structure only. If you insert new |
** interfaces to the end of this structure only. If you insert new |
| ** interfaces in the middle of this structure, then older different |
** interfaces in the middle of this structure, then older different |
| ** versions of SQLite will not be able to load each others' shared | ** versions of SQLite will not be able to load each other's shared |
| ** libraries! |
** libraries! |
| */ |
*/ |
| struct sqlite3_api_routines { |
struct sqlite3_api_routines { |
|
Line 236 struct sqlite3_api_routines {
|
Line 234 struct sqlite3_api_routines {
|
| int (*blob_reopen)(sqlite3_blob*,sqlite3_int64); |
int (*blob_reopen)(sqlite3_blob*,sqlite3_int64); |
| int (*vtab_config)(sqlite3*,int op,...); |
int (*vtab_config)(sqlite3*,int op,...); |
| int (*vtab_on_conflict)(sqlite3*); |
int (*vtab_on_conflict)(sqlite3*); |
| |
/* Version 3.7.16 and later */ |
| |
int (*close_v2)(sqlite3*); |
| |
const char *(*db_filename)(sqlite3*,const char*); |
| |
int (*db_readonly)(sqlite3*,const char*); |
| |
int (*db_release_memory)(sqlite3*); |
| |
const char *(*errstr)(int); |
| |
int (*stmt_busy)(sqlite3_stmt*); |
| |
int (*stmt_readonly)(sqlite3_stmt*); |
| |
int (*stricmp)(const char*,const char*); |
| |
int (*uri_boolean)(const char*,const char*,int); |
| |
sqlite3_int64 (*uri_int64)(const char*,const char*,sqlite3_int64); |
| |
const char *(*uri_parameter)(const char*,const char*); |
| |
char *(*vsnprintf)(int,char*,const char*,va_list); |
| |
int (*wal_checkpoint_v2)(sqlite3*,const char*,int,int*,int*); |
| |
/* Version 3.8.7 and later */ |
| |
int (*auto_extension)(void(*)(void)); |
| |
int (*bind_blob64)(sqlite3_stmt*,int,const void*,sqlite3_uint64, |
| |
void(*)(void*)); |
| |
int (*bind_text64)(sqlite3_stmt*,int,const char*,sqlite3_uint64, |
| |
void(*)(void*),unsigned char); |
| |
int (*cancel_auto_extension)(void(*)(void)); |
| |
int (*load_extension)(sqlite3*,const char*,const char*,char**); |
| |
void *(*malloc64)(sqlite3_uint64); |
| |
sqlite3_uint64 (*msize)(void*); |
| |
void *(*realloc64)(void*,sqlite3_uint64); |
| |
void (*reset_auto_extension)(void); |
| |
void (*result_blob64)(sqlite3_context*,const void*,sqlite3_uint64, |
| |
void(*)(void*)); |
| |
void (*result_text64)(sqlite3_context*,const char*,sqlite3_uint64, |
| |
void(*)(void*), unsigned char); |
| |
int (*strglob)(const char*,const char*); |
| |
/* Version 3.8.11 and later */ |
| |
sqlite3_value *(*value_dup)(const sqlite3_value*); |
| |
void (*value_free)(sqlite3_value*); |
| |
int (*result_zeroblob64)(sqlite3_context*,sqlite3_uint64); |
| |
int (*bind_zeroblob64)(sqlite3_stmt*, int, sqlite3_uint64); |
| |
/* Version 3.9.0 and later */ |
| |
unsigned int (*value_subtype)(sqlite3_value*); |
| |
void (*result_subtype)(sqlite3_context*,unsigned int); |
| |
/* Version 3.10.0 and later */ |
| |
int (*status64)(int,sqlite3_int64*,sqlite3_int64*,int); |
| |
int (*strlike)(const char*,const char*,unsigned int); |
| |
int (*db_cacheflush)(sqlite3*); |
| |
/* Version 3.12.0 and later */ |
| |
int (*system_errno)(sqlite3*); |
| |
/* Version 3.14.0 and later */ |
| |
int (*trace_v2)(sqlite3*,unsigned,int(*)(unsigned,void*,void*,void*),void*); |
| |
char *(*expanded_sql)(sqlite3_stmt*); |
| }; |
}; |
| |
|
| /* |
/* |
| |
** This is the function signature used for all extension entry points. It |
| |
** is also defined in the file "loadext.c". |
| |
*/ |
| |
typedef int (*sqlite3_loadext_entry)( |
| |
sqlite3 *db, /* Handle to the database. */ |
| |
char **pzErrMsg, /* Used to set error string on failure. */ |
| |
const sqlite3_api_routines *pThunk /* Extension API function pointers. */ |
| |
); |
| |
|
| |
/* |
| ** The following macros redefine the API routines so that they are |
** The following macros redefine the API routines so that they are |
| ** redirected throught the global sqlite3_api structure. | ** redirected through the global sqlite3_api structure. |
| ** |
** |
| ** This header file is also used by the loadext.c source file |
** This header file is also used by the loadext.c source file |
| ** (part of the main SQLite library - not an extension) so that |
** (part of the main SQLite library - not an extension) so that |
|
Line 249 struct sqlite3_api_routines {
|
Line 305 struct sqlite3_api_routines {
|
| ** the API. So the redefinition macros are only valid if the |
** the API. So the redefinition macros are only valid if the |
| ** SQLITE_CORE macros is undefined. |
** SQLITE_CORE macros is undefined. |
| */ |
*/ |
| #ifndef SQLITE_CORE | #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) |
| #define sqlite3_aggregate_context sqlite3_api->aggregate_context |
#define sqlite3_aggregate_context sqlite3_api->aggregate_context |
| #ifndef SQLITE_OMIT_DEPRECATED |
#ifndef SQLITE_OMIT_DEPRECATED |
| #define sqlite3_aggregate_count sqlite3_api->aggregate_count |
#define sqlite3_aggregate_count sqlite3_api->aggregate_count |
|
Line 376 struct sqlite3_api_routines {
|
Line 432 struct sqlite3_api_routines {
|
| #define sqlite3_value_text16le sqlite3_api->value_text16le |
#define sqlite3_value_text16le sqlite3_api->value_text16le |
| #define sqlite3_value_type sqlite3_api->value_type |
#define sqlite3_value_type sqlite3_api->value_type |
| #define sqlite3_vmprintf sqlite3_api->vmprintf |
#define sqlite3_vmprintf sqlite3_api->vmprintf |
| |
#define sqlite3_vsnprintf sqlite3_api->vsnprintf |
| #define sqlite3_overload_function sqlite3_api->overload_function |
#define sqlite3_overload_function sqlite3_api->overload_function |
| #define sqlite3_prepare_v2 sqlite3_api->prepare_v2 |
#define sqlite3_prepare_v2 sqlite3_api->prepare_v2 |
| #define sqlite3_prepare16_v2 sqlite3_api->prepare16_v2 |
#define sqlite3_prepare16_v2 sqlite3_api->prepare16_v2 |
|
Line 439 struct sqlite3_api_routines {
|
Line 496 struct sqlite3_api_routines {
|
| #define sqlite3_blob_reopen sqlite3_api->blob_reopen |
#define sqlite3_blob_reopen sqlite3_api->blob_reopen |
| #define sqlite3_vtab_config sqlite3_api->vtab_config |
#define sqlite3_vtab_config sqlite3_api->vtab_config |
| #define sqlite3_vtab_on_conflict sqlite3_api->vtab_on_conflict |
#define sqlite3_vtab_on_conflict sqlite3_api->vtab_on_conflict |
| #endif /* SQLITE_CORE */ | /* Version 3.7.16 and later */ |
| | #define sqlite3_close_v2 sqlite3_api->close_v2 |
| | #define sqlite3_db_filename sqlite3_api->db_filename |
| | #define sqlite3_db_readonly sqlite3_api->db_readonly |
| | #define sqlite3_db_release_memory sqlite3_api->db_release_memory |
| | #define sqlite3_errstr sqlite3_api->errstr |
| | #define sqlite3_stmt_busy sqlite3_api->stmt_busy |
| | #define sqlite3_stmt_readonly sqlite3_api->stmt_readonly |
| | #define sqlite3_stricmp sqlite3_api->stricmp |
| | #define sqlite3_uri_boolean sqlite3_api->uri_boolean |
| | #define sqlite3_uri_int64 sqlite3_api->uri_int64 |
| | #define sqlite3_uri_parameter sqlite3_api->uri_parameter |
| | #define sqlite3_uri_vsnprintf sqlite3_api->vsnprintf |
| | #define sqlite3_wal_checkpoint_v2 sqlite3_api->wal_checkpoint_v2 |
| | /* Version 3.8.7 and later */ |
| | #define sqlite3_auto_extension sqlite3_api->auto_extension |
| | #define sqlite3_bind_blob64 sqlite3_api->bind_blob64 |
| | #define sqlite3_bind_text64 sqlite3_api->bind_text64 |
| | #define sqlite3_cancel_auto_extension sqlite3_api->cancel_auto_extension |
| | #define sqlite3_load_extension sqlite3_api->load_extension |
| | #define sqlite3_malloc64 sqlite3_api->malloc64 |
| | #define sqlite3_msize sqlite3_api->msize |
| | #define sqlite3_realloc64 sqlite3_api->realloc64 |
| | #define sqlite3_reset_auto_extension sqlite3_api->reset_auto_extension |
| | #define sqlite3_result_blob64 sqlite3_api->result_blob64 |
| | #define sqlite3_result_text64 sqlite3_api->result_text64 |
| | #define sqlite3_strglob sqlite3_api->strglob |
| | /* Version 3.8.11 and later */ |
| | #define sqlite3_value_dup sqlite3_api->value_dup |
| | #define sqlite3_value_free sqlite3_api->value_free |
| | #define sqlite3_result_zeroblob64 sqlite3_api->result_zeroblob64 |
| | #define sqlite3_bind_zeroblob64 sqlite3_api->bind_zeroblob64 |
| | /* Version 3.9.0 and later */ |
| | #define sqlite3_value_subtype sqlite3_api->value_subtype |
| | #define sqlite3_result_subtype sqlite3_api->result_subtype |
| | /* Version 3.10.0 and later */ |
| | #define sqlite3_status64 sqlite3_api->status64 |
| | #define sqlite3_strlike sqlite3_api->strlike |
| | #define sqlite3_db_cacheflush sqlite3_api->db_cacheflush |
| | /* Version 3.12.0 and later */ |
| | #define sqlite3_system_errno sqlite3_api->system_errno |
| | /* Version 3.14.0 and later */ |
| | #define sqlite3_trace_v2 sqlite3_api->trace_v2 |
| | #define sqlite3_expanded_sql sqlite3_api->expanded_sql |
| | #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */ |
| |
|
| #define SQLITE_EXTENSION_INIT1 const sqlite3_api_routines *sqlite3_api = 0; | #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) |
| #define SQLITE_EXTENSION_INIT2(v) sqlite3_api = v; | /* This case when the file really is being compiled as a loadable |
| | ** extension */ |
| | # define SQLITE_EXTENSION_INIT1 const sqlite3_api_routines *sqlite3_api=0; |
| | # define SQLITE_EXTENSION_INIT2(v) sqlite3_api=v; |
| | # define SQLITE_EXTENSION_INIT3 \ |
| | extern const sqlite3_api_routines *sqlite3_api; |
| | #else |
| | /* This case when the file is being statically linked into the |
| | ** application */ |
| | # define SQLITE_EXTENSION_INIT1 /*no-op*/ |
| | # define SQLITE_EXTENSION_INIT2(v) (void)v; /* unused parameter */ |
| | # define SQLITE_EXTENSION_INIT3 /*no-op*/ |
| | #endif |
| |
|
| #endif /* _SQLITE3EXT_H_ */ | #endif /* SQLITE3EXT_H */ |