extensions/sqlite/sqlite-source/sqlite3ext.h
author Scott Ehlert <ds@alliedmods.net>
Sun Mar 30 07:00:22 2008 +0000 (2008-03-30)
changeset 1952 b7aa2b626807
permissions -rw-r--r--
Spring Cleaning, Part Ichi (1)
Various minor things done to project files
Updated sample extension project file and updated makefile to the new unified version (more changes likely on the way)
Updated regex project file and makefile
     1 /*
     2 ** 2006 June 7
     3 **
     4 ** The author disclaims copyright to this source code.  In place of
     5 ** a legal notice, here is a blessing:
     6 **
     7 **    May you do good and not evil.
     8 **    May you find forgiveness for yourself and forgive others.
     9 **    May you share freely, never taking more than you give.
    10 **
    11 *************************************************************************
    12 ** This header file defines the SQLite interface for use by
    13 ** shared libraries that want to be imported as extensions into
    14 ** an SQLite instance.  Shared libraries that intend to be loaded
    15 ** as extensions by SQLite should #include this file instead of 
    16 ** sqlite3.h.
    17 **
    18 ** @(#) $Id$
    19 */
    20 #ifndef _SQLITE3EXT_H_
    21 #define _SQLITE3EXT_H_
    22 #include "sqlite3.h"
    23 
    24 typedef struct sqlite3_api_routines sqlite3_api_routines;
    25 
    26 /*
    27 ** The following structure hold pointers to all of the SQLite API
    28 ** routines.
    29 **
    30 ** WARNING:  In order to maintain backwards compatibility, add new
    31 ** interfaces to the end of this structure only.  If you insert new
    32 ** interfaces in the middle of this structure, then older different
    33 ** versions of SQLite will not be able to load each others shared
    34 ** libraries!
    35 */
    36 struct sqlite3_api_routines {
    37   void * (*aggregate_context)(sqlite3_context*,int nBytes);
    38   int  (*aggregate_count)(sqlite3_context*);
    39   int  (*bind_blob)(sqlite3_stmt*,int,const void*,int n,void(*)(void*));
    40   int  (*bind_double)(sqlite3_stmt*,int,double);
    41   int  (*bind_int)(sqlite3_stmt*,int,int);
    42   int  (*bind_int64)(sqlite3_stmt*,int,sqlite_int64);
    43   int  (*bind_null)(sqlite3_stmt*,int);
    44   int  (*bind_parameter_count)(sqlite3_stmt*);
    45   int  (*bind_parameter_index)(sqlite3_stmt*,const char*zName);
    46   const char * (*bind_parameter_name)(sqlite3_stmt*,int);
    47   int  (*bind_text)(sqlite3_stmt*,int,const char*,int n,void(*)(void*));
    48   int  (*bind_text16)(sqlite3_stmt*,int,const void*,int,void(*)(void*));
    49   int  (*bind_value)(sqlite3_stmt*,int,const sqlite3_value*);
    50   int  (*busy_handler)(sqlite3*,int(*)(void*,int),void*);
    51   int  (*busy_timeout)(sqlite3*,int ms);
    52   int  (*changes)(sqlite3*);
    53   int  (*close)(sqlite3*);
    54   int  (*collation_needed)(sqlite3*,void*,void(*)(void*,sqlite3*,int eTextRep,const char*));
    55   int  (*collation_needed16)(sqlite3*,void*,void(*)(void*,sqlite3*,int eTextRep,const void*));
    56   const void * (*column_blob)(sqlite3_stmt*,int iCol);
    57   int  (*column_bytes)(sqlite3_stmt*,int iCol);
    58   int  (*column_bytes16)(sqlite3_stmt*,int iCol);
    59   int  (*column_count)(sqlite3_stmt*pStmt);
    60   const char * (*column_database_name)(sqlite3_stmt*,int);
    61   const void * (*column_database_name16)(sqlite3_stmt*,int);
    62   const char * (*column_decltype)(sqlite3_stmt*,int i);
    63   const void * (*column_decltype16)(sqlite3_stmt*,int);
    64   double  (*column_double)(sqlite3_stmt*,int iCol);
    65   int  (*column_int)(sqlite3_stmt*,int iCol);
    66   sqlite_int64  (*column_int64)(sqlite3_stmt*,int iCol);
    67   const char * (*column_name)(sqlite3_stmt*,int);
    68   const void * (*column_name16)(sqlite3_stmt*,int);
    69   const char * (*column_origin_name)(sqlite3_stmt*,int);
    70   const void * (*column_origin_name16)(sqlite3_stmt*,int);
    71   const char * (*column_table_name)(sqlite3_stmt*,int);
    72   const void * (*column_table_name16)(sqlite3_stmt*,int);
    73   const unsigned char * (*column_text)(sqlite3_stmt*,int iCol);
    74   const void * (*column_text16)(sqlite3_stmt*,int iCol);
    75   int  (*column_type)(sqlite3_stmt*,int iCol);
    76   sqlite3_value* (*column_value)(sqlite3_stmt*,int iCol);
    77   void * (*commit_hook)(sqlite3*,int(*)(void*),void*);
    78   int  (*complete)(const char*sql);
    79   int  (*complete16)(const void*sql);
    80   int  (*create_collation)(sqlite3*,const char*,int,void*,int(*)(void*,int,const void*,int,const void*));
    81   int  (*create_collation16)(sqlite3*,const char*,int,void*,int(*)(void*,int,const void*,int,const void*));
    82   int  (*create_function)(sqlite3*,const char*,int,int,void*,void (*xFunc)(sqlite3_context*,int,sqlite3_value**),void (*xStep)(sqlite3_context*,int,sqlite3_value**),void (*xFinal)(sqlite3_context*));
    83   int  (*create_function16)(sqlite3*,const void*,int,int,void*,void (*xFunc)(sqlite3_context*,int,sqlite3_value**),void (*xStep)(sqlite3_context*,int,sqlite3_value**),void (*xFinal)(sqlite3_context*));
    84   int (*create_module)(sqlite3*,const char*,const sqlite3_module*,void*);
    85   int  (*data_count)(sqlite3_stmt*pStmt);
    86   sqlite3 * (*db_handle)(sqlite3_stmt*);
    87   int (*declare_vtab)(sqlite3*,const char*);
    88   int  (*enable_shared_cache)(int);
    89   int  (*errcode)(sqlite3*db);
    90   const char * (*errmsg)(sqlite3*);
    91   const void * (*errmsg16)(sqlite3*);
    92   int  (*exec)(sqlite3*,const char*,sqlite3_callback,void*,char**);
    93   int  (*expired)(sqlite3_stmt*);
    94   int  (*finalize)(sqlite3_stmt*pStmt);
    95   void  (*free)(void*);
    96   void  (*free_table)(char**result);
    97   int  (*get_autocommit)(sqlite3*);
    98   void * (*get_auxdata)(sqlite3_context*,int);
    99   int  (*get_table)(sqlite3*,const char*,char***,int*,int*,char**);
   100   int  (*global_recover)(void);
   101   void  (*interruptx)(sqlite3*);
   102   sqlite_int64  (*last_insert_rowid)(sqlite3*);
   103   const char * (*libversion)(void);
   104   int  (*libversion_number)(void);
   105   void *(*malloc)(int);
   106   char * (*mprintf)(const char*,...);
   107   int  (*open)(const char*,sqlite3**);
   108   int  (*open16)(const void*,sqlite3**);
   109   int  (*prepare)(sqlite3*,const char*,int,sqlite3_stmt**,const char**);
   110   int  (*prepare16)(sqlite3*,const void*,int,sqlite3_stmt**,const void**);
   111   void * (*profile)(sqlite3*,void(*)(void*,const char*,sqlite_uint64),void*);
   112   void  (*progress_handler)(sqlite3*,int,int(*)(void*),void*);
   113   void *(*realloc)(void*,int);
   114   int  (*reset)(sqlite3_stmt*pStmt);
   115   void  (*result_blob)(sqlite3_context*,const void*,int,void(*)(void*));
   116   void  (*result_double)(sqlite3_context*,double);
   117   void  (*result_error)(sqlite3_context*,const char*,int);
   118   void  (*result_error16)(sqlite3_context*,const void*,int);
   119   void  (*result_int)(sqlite3_context*,int);
   120   void  (*result_int64)(sqlite3_context*,sqlite_int64);
   121   void  (*result_null)(sqlite3_context*);
   122   void  (*result_text)(sqlite3_context*,const char*,int,void(*)(void*));
   123   void  (*result_text16)(sqlite3_context*,const void*,int,void(*)(void*));
   124   void  (*result_text16be)(sqlite3_context*,const void*,int,void(*)(void*));
   125   void  (*result_text16le)(sqlite3_context*,const void*,int,void(*)(void*));
   126   void  (*result_value)(sqlite3_context*,sqlite3_value*);
   127   void * (*rollback_hook)(sqlite3*,void(*)(void*),void*);
   128   int  (*set_authorizer)(sqlite3*,int(*)(void*,int,const char*,const char*,const char*,const char*),void*);
   129   void  (*set_auxdata)(sqlite3_context*,int,void*,void (*)(void*));
   130   char * (*snprintf)(int,char*,const char*,...);
   131   int  (*step)(sqlite3_stmt*);
   132   int  (*table_column_metadata)(sqlite3*,const char*,const char*,const char*,char const**,char const**,int*,int*,int*);
   133   void  (*thread_cleanup)(void);
   134   int  (*total_changes)(sqlite3*);
   135   void * (*trace)(sqlite3*,void(*xTrace)(void*,const char*),void*);
   136   int  (*transfer_bindings)(sqlite3_stmt*,sqlite3_stmt*);
   137   void * (*update_hook)(sqlite3*,void(*)(void*,int ,char const*,char const*,sqlite_int64),void*);
   138   void * (*user_data)(sqlite3_context*);
   139   const void * (*value_blob)(sqlite3_value*);
   140   int  (*value_bytes)(sqlite3_value*);
   141   int  (*value_bytes16)(sqlite3_value*);
   142   double  (*value_double)(sqlite3_value*);
   143   int  (*value_int)(sqlite3_value*);
   144   sqlite_int64  (*value_int64)(sqlite3_value*);
   145   int  (*value_numeric_type)(sqlite3_value*);
   146   const unsigned char * (*value_text)(sqlite3_value*);
   147   const void * (*value_text16)(sqlite3_value*);
   148   const void * (*value_text16be)(sqlite3_value*);
   149   const void * (*value_text16le)(sqlite3_value*);
   150   int  (*value_type)(sqlite3_value*);
   151   char *(*vmprintf)(const char*,va_list);
   152   /* Added ??? */
   153   int (*overload_function)(sqlite3*, const char *zFuncName, int nArg);
   154   /* Added by 3.3.13 */
   155   int (*prepare_v2)(sqlite3*,const char*,int,sqlite3_stmt**,const char**);
   156   int (*prepare16_v2)(sqlite3*,const void*,int,sqlite3_stmt**,const void**);
   157   int (*clear_bindings)(sqlite3_stmt*);
   158   /* Added by 3.4.1 */
   159   int (*create_module_v2)(sqlite3*,const char*,const sqlite3_module*,void*,void (*xDestroy)(void *));
   160   /* Added by 3.5.0 */
   161   int (*bind_zeroblob)(sqlite3_stmt*,int,int);
   162   int (*blob_bytes)(sqlite3_blob*);
   163   int (*blob_close)(sqlite3_blob*);
   164   int (*blob_open)(sqlite3*,const char*,const char*,const char*,sqlite3_int64,int,sqlite3_blob**);
   165   int (*blob_read)(sqlite3_blob*,void*,int,int);
   166   int (*blob_write)(sqlite3_blob*,const void*,int,int);
   167   int (*create_collation_v2)(sqlite3*,const char*,int,void*,int(*)(void*,int,const void*,int,const void*),void(*)(void*));
   168   int (*file_control)(sqlite3*,const char*,int,void*);
   169   sqlite3_int64 (*memory_highwater)(int);
   170   sqlite3_int64 (*memory_used)(void);
   171   sqlite3_mutex *(*mutex_alloc)(int);
   172   void (*mutex_enter)(sqlite3_mutex*);
   173   void (*mutex_free)(sqlite3_mutex*);
   174   void (*mutex_leave)(sqlite3_mutex*);
   175   int (*mutex_try)(sqlite3_mutex*);
   176   int (*open_v2)(const char*,sqlite3**,int,const char*);
   177   int (*release_memory)(int);
   178   void (*result_error_nomem)(sqlite3_context*);
   179   void (*result_error_toobig)(sqlite3_context*);
   180   int (*sleep)(int);
   181   void (*soft_heap_limit)(int);
   182   sqlite3_vfs *(*vfs_find)(const char*);
   183   int (*vfs_register)(sqlite3_vfs*,int);
   184   int (*vfs_unregister)(sqlite3_vfs*);
   185 };
   186 
   187 /*
   188 ** The following macros redefine the API routines so that they are
   189 ** redirected throught the global sqlite3_api structure.
   190 **
   191 ** This header file is also used by the loadext.c source file
   192 ** (part of the main SQLite library - not an extension) so that
   193 ** it can get access to the sqlite3_api_routines structure
   194 ** definition.  But the main library does not want to redefine
   195 ** the API.  So the redefinition macros are only valid if the
   196 ** SQLITE_CORE macros is undefined.
   197 */
   198 #ifndef SQLITE_CORE
   199 #define sqlite3_aggregate_context      sqlite3_api->aggregate_context
   200 #define sqlite3_aggregate_count        sqlite3_api->aggregate_count
   201 #define sqlite3_bind_blob              sqlite3_api->bind_blob
   202 #define sqlite3_bind_double            sqlite3_api->bind_double
   203 #define sqlite3_bind_int               sqlite3_api->bind_int
   204 #define sqlite3_bind_int64             sqlite3_api->bind_int64
   205 #define sqlite3_bind_null              sqlite3_api->bind_null
   206 #define sqlite3_bind_parameter_count   sqlite3_api->bind_parameter_count
   207 #define sqlite3_bind_parameter_index   sqlite3_api->bind_parameter_index
   208 #define sqlite3_bind_parameter_name    sqlite3_api->bind_parameter_name
   209 #define sqlite3_bind_text              sqlite3_api->bind_text
   210 #define sqlite3_bind_text16            sqlite3_api->bind_text16
   211 #define sqlite3_bind_value             sqlite3_api->bind_value
   212 #define sqlite3_busy_handler           sqlite3_api->busy_handler
   213 #define sqlite3_busy_timeout           sqlite3_api->busy_timeout
   214 #define sqlite3_changes                sqlite3_api->changes
   215 #define sqlite3_close                  sqlite3_api->close
   216 #define sqlite3_collation_needed       sqlite3_api->collation_needed
   217 #define sqlite3_collation_needed16     sqlite3_api->collation_needed16
   218 #define sqlite3_column_blob            sqlite3_api->column_blob
   219 #define sqlite3_column_bytes           sqlite3_api->column_bytes
   220 #define sqlite3_column_bytes16         sqlite3_api->column_bytes16
   221 #define sqlite3_column_count           sqlite3_api->column_count
   222 #define sqlite3_column_database_name   sqlite3_api->column_database_name
   223 #define sqlite3_column_database_name16 sqlite3_api->column_database_name16
   224 #define sqlite3_column_decltype        sqlite3_api->column_decltype
   225 #define sqlite3_column_decltype16      sqlite3_api->column_decltype16
   226 #define sqlite3_column_double          sqlite3_api->column_double
   227 #define sqlite3_column_int             sqlite3_api->column_int
   228 #define sqlite3_column_int64           sqlite3_api->column_int64
   229 #define sqlite3_column_name            sqlite3_api->column_name
   230 #define sqlite3_column_name16          sqlite3_api->column_name16
   231 #define sqlite3_column_origin_name     sqlite3_api->column_origin_name
   232 #define sqlite3_column_origin_name16   sqlite3_api->column_origin_name16
   233 #define sqlite3_column_table_name      sqlite3_api->column_table_name
   234 #define sqlite3_column_table_name16    sqlite3_api->column_table_name16
   235 #define sqlite3_column_text            sqlite3_api->column_text
   236 #define sqlite3_column_text16          sqlite3_api->column_text16
   237 #define sqlite3_column_type            sqlite3_api->column_type
   238 #define sqlite3_column_value           sqlite3_api->column_value
   239 #define sqlite3_commit_hook            sqlite3_api->commit_hook
   240 #define sqlite3_complete               sqlite3_api->complete
   241 #define sqlite3_complete16             sqlite3_api->complete16
   242 #define sqlite3_create_collation       sqlite3_api->create_collation
   243 #define sqlite3_create_collation16     sqlite3_api->create_collation16
   244 #define sqlite3_create_function        sqlite3_api->create_function
   245 #define sqlite3_create_function16      sqlite3_api->create_function16
   246 #define sqlite3_create_module          sqlite3_api->create_module
   247 #define sqlite3_create_module_v2       sqlite3_api->create_module_v2
   248 #define sqlite3_data_count             sqlite3_api->data_count
   249 #define sqlite3_db_handle              sqlite3_api->db_handle
   250 #define sqlite3_declare_vtab           sqlite3_api->declare_vtab
   251 #define sqlite3_enable_shared_cache    sqlite3_api->enable_shared_cache
   252 #define sqlite3_errcode                sqlite3_api->errcode
   253 #define sqlite3_errmsg                 sqlite3_api->errmsg
   254 #define sqlite3_errmsg16               sqlite3_api->errmsg16
   255 #define sqlite3_exec                   sqlite3_api->exec
   256 #define sqlite3_expired                sqlite3_api->expired
   257 #define sqlite3_finalize               sqlite3_api->finalize
   258 #define sqlite3_free                   sqlite3_api->free
   259 #define sqlite3_free_table             sqlite3_api->free_table
   260 #define sqlite3_get_autocommit         sqlite3_api->get_autocommit
   261 #define sqlite3_get_auxdata            sqlite3_api->get_auxdata
   262 #define sqlite3_get_table              sqlite3_api->get_table
   263 #define sqlite3_global_recover         sqlite3_api->global_recover
   264 #define sqlite3_interrupt              sqlite3_api->interruptx
   265 #define sqlite3_last_insert_rowid      sqlite3_api->last_insert_rowid
   266 #define sqlite3_libversion             sqlite3_api->libversion
   267 #define sqlite3_libversion_number      sqlite3_api->libversion_number
   268 #define sqlite3_malloc                 sqlite3_api->malloc
   269 #define sqlite3_mprintf                sqlite3_api->mprintf
   270 #define sqlite3_open                   sqlite3_api->open
   271 #define sqlite3_open16                 sqlite3_api->open16
   272 #define sqlite3_prepare                sqlite3_api->prepare
   273 #define sqlite3_prepare16              sqlite3_api->prepare16
   274 #define sqlite3_prepare_v2             sqlite3_api->prepare_v2
   275 #define sqlite3_prepare16_v2           sqlite3_api->prepare16_v2
   276 #define sqlite3_profile                sqlite3_api->profile
   277 #define sqlite3_progress_handler       sqlite3_api->progress_handler
   278 #define sqlite3_realloc                sqlite3_api->realloc
   279 #define sqlite3_reset                  sqlite3_api->reset
   280 #define sqlite3_result_blob            sqlite3_api->result_blob
   281 #define sqlite3_result_double          sqlite3_api->result_double
   282 #define sqlite3_result_error           sqlite3_api->result_error
   283 #define sqlite3_result_error16         sqlite3_api->result_error16
   284 #define sqlite3_result_int             sqlite3_api->result_int
   285 #define sqlite3_result_int64           sqlite3_api->result_int64
   286 #define sqlite3_result_null            sqlite3_api->result_null
   287 #define sqlite3_result_text            sqlite3_api->result_text
   288 #define sqlite3_result_text16          sqlite3_api->result_text16
   289 #define sqlite3_result_text16be        sqlite3_api->result_text16be
   290 #define sqlite3_result_text16le        sqlite3_api->result_text16le
   291 #define sqlite3_result_value           sqlite3_api->result_value
   292 #define sqlite3_rollback_hook          sqlite3_api->rollback_hook
   293 #define sqlite3_set_authorizer         sqlite3_api->set_authorizer
   294 #define sqlite3_set_auxdata            sqlite3_api->set_auxdata
   295 #define sqlite3_snprintf               sqlite3_api->snprintf
   296 #define sqlite3_step                   sqlite3_api->step
   297 #define sqlite3_table_column_metadata  sqlite3_api->table_column_metadata
   298 #define sqlite3_thread_cleanup         sqlite3_api->thread_cleanup
   299 #define sqlite3_total_changes          sqlite3_api->total_changes
   300 #define sqlite3_trace                  sqlite3_api->trace
   301 #define sqlite3_transfer_bindings      sqlite3_api->transfer_bindings
   302 #define sqlite3_update_hook            sqlite3_api->update_hook
   303 #define sqlite3_user_data              sqlite3_api->user_data
   304 #define sqlite3_value_blob             sqlite3_api->value_blob
   305 #define sqlite3_value_bytes            sqlite3_api->value_bytes
   306 #define sqlite3_value_bytes16          sqlite3_api->value_bytes16
   307 #define sqlite3_value_double           sqlite3_api->value_double
   308 #define sqlite3_value_int              sqlite3_api->value_int
   309 #define sqlite3_value_int64            sqlite3_api->value_int64
   310 #define sqlite3_value_numeric_type     sqlite3_api->value_numeric_type
   311 #define sqlite3_value_text             sqlite3_api->value_text
   312 #define sqlite3_value_text16           sqlite3_api->value_text16
   313 #define sqlite3_value_text16be         sqlite3_api->value_text16be
   314 #define sqlite3_value_text16le         sqlite3_api->value_text16le
   315 #define sqlite3_value_type             sqlite3_api->value_type
   316 #define sqlite3_vmprintf               sqlite3_api->vmprintf
   317 #define sqlite3_overload_function      sqlite3_api->overload_function
   318 #define sqlite3_prepare_v2             sqlite3_api->prepare_v2
   319 #define sqlite3_prepare16_v2           sqlite3_api->prepare16_v2
   320 #define sqlite3_clear_bindings         sqlite3_api->clear_bindings
   321 #define sqlite3_bind_zeroblob          sqlite3_api->bind_zeroblob
   322 #define sqlite3_blob_bytes             sqlite3_api->blob_bytes
   323 #define sqlite3_blob_close             sqlite3_api->blob_close
   324 #define sqlite3_blob_open              sqlite3_api->blob_open
   325 #define sqlite3_blob_read              sqlite3_api->blob_read
   326 #define sqlite3_blob_write             sqlite3_api->blob_write
   327 #define sqlite3_create_collation_v2    sqlite3_api->create_collation_v2
   328 #define sqlite3_file_control           sqlite3_api->file_control
   329 #define sqlite3_memory_highwater       sqlite3_api->memory_highwater
   330 #define sqlite3_memory_used            sqlite3_api->memory_used
   331 #define sqlite3_mutex_alloc            sqlite3_api->mutex_alloc
   332 #define sqlite3_mutex_enter            sqlite3_api->mutex_enter
   333 #define sqlite3_mutex_free             sqlite3_api->mutex_free
   334 #define sqlite3_mutex_leave            sqlite3_api->mutex_leave
   335 #define sqlite3_mutex_try              sqlite3_api->mutex_try
   336 #define sqlite3_open_v2                sqlite3_api->open_v2
   337 #define sqlite3_release_memory         sqlite3_api->release_memory
   338 #define sqlite3_result_error_nomem     sqlite3_api->result_error_nomem
   339 #define sqlite3_result_error_toobig    sqlite3_api->result_error_toobig
   340 #define sqlite3_sleep                  sqlite3_api->sleep
   341 #define sqlite3_soft_heap_limit        sqlite3_api->soft_heap_limit
   342 #define sqlite3_vfs_find               sqlite3_api->vfs_find
   343 #define sqlite3_vfs_register           sqlite3_api->vfs_register
   344 #define sqlite3_vfs_unregister         sqlite3_api->vfs_unregister
   345 #endif /* SQLITE_CORE */
   346 
   347 #define SQLITE_EXTENSION_INIT1     const sqlite3_api_routines *sqlite3_api;
   348 #define SQLITE_EXTENSION_INIT2(v)  sqlite3_api = v;
   349 
   350 #endif /* _SQLITE3EXT_H_ */