2
0

sqlite3.inc 90 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478
  1. {$mode objfpc}{$h+}
  2. {$ifdef BSD}
  3. {$linklib c}
  4. {$linklib pthread}
  5. {$endif}
  6. {$packrecords C}
  7. {.$DEFINE SQLITE_OBSOLETE}
  8. interface
  9. {$IFDEF FPC_DOTTEDUNITS}
  10. uses
  11. System.CTypes,
  12. {$ifdef LOAD_DYNAMICALLY}
  13. System.SysUtils, System.DynLibs;
  14. {$else}
  15. System.DynLibs;
  16. {$ifdef darwin}
  17. {$linklib sqlite3}
  18. {$endif}
  19. {$endif}
  20. {$ELSE FPC_DOTTEDUNITS}
  21. uses
  22. ctypes,
  23. {$ifdef LOAD_DYNAMICALLY}
  24. SysUtils, DynLibs;
  25. {$else}
  26. DynLibs;
  27. {$ifdef darwin}
  28. {$linklib sqlite3}
  29. {$endif}
  30. {$endif}
  31. {$ENDIF FPC_DOTTEDUNITS}
  32. const
  33. {$IFDEF WINDOWS}
  34. Sqlite3Lib = 'sqlite3.dll';
  35. {$else}
  36. Sqlite3Lib = 'libsqlite3.'+sharedsuffix;
  37. {$endif}
  38. {$IFDEF LOAD_DYNAMICALLY}
  39. {$DEFINE D}
  40. {$ELSE}
  41. {$DEFINE S}
  42. {$ENDIF}
  43. {
  44. Header converted from Sqlite version 3.14.2
  45. }
  46. //SQLITE_EXTERN const AnsiChar sqlite3_version[];
  47. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_libversion{$IFDEF D}: function{$ENDIF}(): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  48. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_libversion_number{$IFDEF D}: function{$ENDIF}(): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  49. function sqlite3_version(): pansichar;
  50. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_threadsafe{$IFDEF D}: function{$ENDIF}(): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  51. type
  52. ppsqlite3 = ^psqlite3;
  53. psqlite3 = ^_sqlite3;
  54. _sqlite3 = record end;
  55. type
  56. sqlite3_destructor_type = procedure(user: pointer); cdecl;
  57. const
  58. SQLITE_STATIC = sqlite3_destructor_type(nil);
  59. SQLITE_TRANSIENT = pointer(-1); //sqlite3_destructor_type(-1);
  60. type
  61. psqlite_int64 = ^sqlite_int64;
  62. sqlite_int64 = Int64;
  63. psqlite_uint64 = ^sqlite_uint64;
  64. sqlite_uint64 = QWord;
  65. psqlite3_int64 = ^sqlite3_int64;
  66. sqlite3_int64 = sqlite_int64;
  67. psqlite3_uint64 = ^sqlite3_uint64;
  68. sqlite3_uint64 = sqlite_uint64;
  69. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_close{$IFDEF D}: function{$ENDIF}(ref: psqlite3): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  70. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_close_v2{$IFDEF D}: function{$ENDIF}(ref: psqlite3): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  71. type
  72. sqlite3_callback = function(user: pointer; cols: cint; values, name: ppansichar): cint; cdecl;
  73. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_exec{$IFDEF D}: function{$ENDIF}(
  74. db: psqlite3; (* An open database *)
  75. sql: pansichar; (* SQL to be evaluted *)
  76. cb: sqlite3_callback; (* Callback function *)
  77. user: pointer; (* 1st argument to callback *)
  78. errmsg: ppansichar (* Error msg written here *)
  79. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  80. const
  81. SQLITE_OK = 0; (* Successful result *)
  82. (* beginning-of-error-codes *)
  83. SQLITE_ERROR = 1; (* SQL error or missing database *)
  84. SQLITE_INTERNAL = 2; (* Internal logic error in SQLite *)
  85. SQLITE_PERM = 3; (* Access permission denied *)
  86. SQLITE_ABORT = 4; (* Callback routine requested an abort *)
  87. SQLITE_BUSY = 5; (* The database file is locked *)
  88. SQLITE_LOCKED = 6; (* A table in the database is locked *)
  89. SQLITE_NOMEM = 7; (* A malloc() failed *)
  90. SQLITE_READONLY = 8; (* Attempt to write a readonly database *)
  91. SQLITE_INTERRUPT = 9; (* Operation terminated by sqlite3_interrupt()*)
  92. SQLITE_IOERR = 10; (* Some kind of disk I/O error occurred *)
  93. SQLITE_CORRUPT = 11; (* The database disk image is malformed *)
  94. SQLITE_NOTFOUND = 12; (* NOT USED. Table or record not found *)
  95. SQLITE_FULL = 13; (* Insertion failed because database is full *)
  96. SQLITE_CANTOPEN = 14; (* Unable to open the database file *)
  97. SQLITE_PROTOCOL = 15; (* NOT USED. Database lock protocol error *)
  98. SQLITE_EMPTY = 16; (* Database is empty *)
  99. SQLITE_SCHEMA = 17; (* The database schema changed *)
  100. SQLITE_TOOBIG = 18; (* String or BLOB exceeds size limit *)
  101. SQLITE_CONSTRAINT = 19; (* Abort due to constraint violation *)
  102. SQLITE_MISMATCH = 20; (* Data type mismatch *)
  103. SQLITE_MISUSE = 21; (* Library used incorrectly *)
  104. SQLITE_NOLFS = 22; (* Uses OS features not supported on host *)
  105. SQLITE_AUTH = 23; (* Authorization denied *)
  106. SQLITE_FORMAT = 24; (* Auxiliary database format error *)
  107. SQLITE_RANGE = 25; (* 2nd parameter to sqlite3_bind out of range *)
  108. SQLITE_NOTADB = 26; (* File opened that is not a database file *)
  109. SQLITE_NOTICE = 27; (* Notifications from sqlite3_log() *)
  110. SQLITE_WARNING = 28; (* Warnings from sqlite3_log() *)
  111. SQLITE_ROW = 100; (* sqlite3_step() has another row ready *)
  112. SQLITE_DONE = 101; (* sqlite3_step() has finished executing *)
  113. SQLITE_IOERR_READ = (SQLITE_IOERR or (1 shl 8));
  114. SQLITE_IOERR_SHORT_READ = (SQLITE_IOERR or (2 shl 8));
  115. SQLITE_IOERR_WRITE = (SQLITE_IOERR or (3 shl 8));
  116. SQLITE_IOERR_FSYNC = (SQLITE_IOERR or (4 shl 8));
  117. SQLITE_IOERR_DIR_FSYNC = (SQLITE_IOERR or (5 shl 8));
  118. SQLITE_IOERR_TRUNCATE = (SQLITE_IOERR or (6 shl 8));
  119. SQLITE_IOERR_FSTAT = (SQLITE_IOERR or (7 shl 8));
  120. SQLITE_IOERR_UNLOCK = (SQLITE_IOERR or (8 shl 8));
  121. SQLITE_IOERR_RDLOCK = (SQLITE_IOERR or (9 shl 8));
  122. SQLITE_IOERR_DELETE = (SQLITE_IOERR or (10 shl 8));
  123. SQLITE_IOERR_BLOCKED = (SQLITE_IOERR or (11 shl 8));
  124. SQLITE_IOERR_NOMEM = (SQLITE_IOERR or (12 shl 8));
  125. SQLITE_IOERR_ACCESS = (SQLITE_IOERR or (13 shl 8));
  126. SQLITE_IOERR_CHECKRESERVEDLOCK = (SQLITE_IOERR or (14 shl 8));
  127. SQLITE_IOERR_LOCK = (SQLITE_IOERR or (15 shl 8));
  128. SQLITE_IOERR_CLOSE = (SQLITE_IOERR or (16 shl 8));
  129. SQLITE_IOERR_DIR_CLOSE = (SQLITE_IOERR or (17 shl 8));
  130. SQLITE_IOERR_SHMOPEN = (SQLITE_IOERR or (18 shl 8));
  131. SQLITE_IOERR_SHMSIZE = (SQLITE_IOERR or (19 shl 8));
  132. SQLITE_IOERR_SHMLOCK = (SQLITE_IOERR or (20 shl 8));
  133. SQLITE_IOERR_SHMMAP = (SQLITE_IOERR or (21 shl 8));
  134. SQLITE_IOERR_SEEK = (SQLITE_IOERR or (22 shl 8));
  135. SQLITE_IOERR_DELETE_NOENT = (SQLITE_IOERR or (23 shl 8));
  136. SQLITE_IOERR_MMAP = (SQLITE_IOERR or (24 shl 8));
  137. SQLITE_IOERR_GETTEMPPATH = (SQLITE_IOERR or (25 shl 8));
  138. SQLITE_IOERR_CONVPATH = (SQLITE_IOERR or (26 shl 8));
  139. SQLITE_IOERR_VNODE = (SQLITE_IOERR or (27 shl 8));
  140. SQLITE_IOERR_AUTH = (SQLITE_IOERR or (28 shl 8));
  141. SQLITE_LOCKED_SHAREDCACHE = (SQLITE_LOCKED or (1 shl 8));
  142. SQLITE_BUSY_RECOVERY = (SQLITE_BUSY or (1 shl 8));
  143. SQLITE_BUSY_SNAPSHOT = (SQLITE_BUSY or (2 shl 8));
  144. SQLITE_CANTOPEN_NOTEMPDIR = (SQLITE_CANTOPEN or (1 shl 8));
  145. SQLITE_CANTOPEN_ISDIR = (SQLITE_CANTOPEN or (2 shl 8));
  146. SQLITE_CANTOPEN_FULLPATH = (SQLITE_CANTOPEN or (3 shl 8));
  147. SQLITE_CANTOPEN_CONVPATH = (SQLITE_CANTOPEN or (4 shl 8));
  148. SQLITE_CORRUPT_VTAB = (SQLITE_CORRUPT or (1 shl 8));
  149. SQLITE_READONLY_RECOVERY = (SQLITE_READONLY or (1 shl 8));
  150. SQLITE_READONLY_CANTLOCK = (SQLITE_READONLY or (2 shl 8));
  151. SQLITE_READONLY_ROLLBACK = (SQLITE_READONLY or (3 shl 8));
  152. SQLITE_READONLY_DBMOVED = (SQLITE_READONLY or (4 shl 8));
  153. SQLITE_ABORT_ROLLBACK = (SQLITE_ABORT or (2 shl 8));
  154. SQLITE_CONSTRAINT_CHECK = (SQLITE_CONSTRAINT or (1 shl 8));
  155. SQLITE_CONSTRAINT_COMMITHOOK = (SQLITE_CONSTRAINT or (2 shl 8));
  156. SQLITE_CONSTRAINT_FOREIGNKEY = (SQLITE_CONSTRAINT or (3 shl 8));
  157. SQLITE_CONSTRAINT_FUNCTION = (SQLITE_CONSTRAINT or (4 shl 8));
  158. SQLITE_CONSTRAINT_NOTNULL = (SQLITE_CONSTRAINT or (5 shl 8));
  159. SQLITE_CONSTRAINT_PRIMARYKEY = (SQLITE_CONSTRAINT or (6 shl 8));
  160. SQLITE_CONSTRAINT_TRIGGER = (SQLITE_CONSTRAINT or (7 shl 8));
  161. SQLITE_CONSTRAINT_UNIQUE = (SQLITE_CONSTRAINT or (8 shl 8));
  162. SQLITE_CONSTRAINT_VTAB = (SQLITE_CONSTRAINT or (9 shl 8));
  163. SQLITE_CONSTRAINT_ROWID = (SQLITE_CONSTRAINT or (10 shl 8));
  164. SQLITE_NOTICE_RECOVER_WAL = (SQLITE_NOTICE or (1 shl 8));
  165. SQLITE_NOTICE_RECOVER_ROLLBACK = (SQLITE_NOTICE or (2 shl 8));
  166. SQLITE_WARNING_AUTOINDEX = (SQLITE_WARNING or (1 shl 8));
  167. SQLITE_AUTH_USER = (SQLITE_AUTH or (1 shl 8));
  168. SQLITE_OK_LOAD_PERMANENTLY = (SQLITE_OK or (1 shl 8));
  169. SQLITE_OPEN_READONLY = $00000001;
  170. SQLITE_OPEN_READWRITE = $00000002;
  171. SQLITE_OPEN_CREATE = $00000004;
  172. SQLITE_OPEN_DELETEONCLOSE = $00000008;
  173. SQLITE_OPEN_EXCLUSIVE = $00000010;
  174. SQLITE_OPEN_AUTOPROXY = $00000020; (* VFS only *)
  175. SQLITE_OPEN_URI = $00000040; (* Ok for sqlite3_open_v2() *)
  176. SQLITE_OPEN_MEMORY = $00000080; (* Ok for sqlite3_open_v2() *)
  177. SQLITE_OPEN_MAIN_DB = $00000100;
  178. SQLITE_OPEN_TEMP_DB = $00000200;
  179. SQLITE_OPEN_TRANSIENT_DB = $00000400;
  180. SQLITE_OPEN_MAIN_JOURNAL = $00000800;
  181. SQLITE_OPEN_TEMP_JOURNAL = $00001000;
  182. SQLITE_OPEN_SUBJOURNAL = $00002000;
  183. SQLITE_OPEN_MASTER_JOURNAL = $00004000;
  184. SQLITE_OPEN_NOMUTEX = $00008000;
  185. SQLITE_OPEN_FULLMUTEX = $00010000;
  186. SQLITE_OPEN_SHAREDCACHE = $00020000;
  187. SQLITE_OPEN_PRIVATECACHE = $00040000;
  188. SQLITE_OPEN_WAL = $00080000;
  189. SQLITE_IOCAP_ATOMIC = $00000001;
  190. SQLITE_IOCAP_ATOMIC512 = $00000002;
  191. SQLITE_IOCAP_ATOMIC1K = $00000004;
  192. SQLITE_IOCAP_ATOMIC2K = $00000008;
  193. SQLITE_IOCAP_ATOMIC4K = $00000010;
  194. SQLITE_IOCAP_ATOMIC8K = $00000020;
  195. SQLITE_IOCAP_ATOMIC16K = $00000040;
  196. SQLITE_IOCAP_ATOMIC32K = $00000080;
  197. SQLITE_IOCAP_ATOMIC64K = $00000100;
  198. SQLITE_IOCAP_SAFE_APPEND = $00000200;
  199. SQLITE_IOCAP_SEQUENTIAL = $00000400;
  200. SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN = $00000800;
  201. SQLITE_IOCAP_POWERSAFE_OVERWRITE = $00001000;
  202. SQLITE_IOCAP_IMMUTABLE = $00002000;
  203. SQLITE_LOCK_NONE = 0;
  204. SQLITE_LOCK_SHARED = 1;
  205. SQLITE_LOCK_RESERVED = 2;
  206. SQLITE_LOCK_PENDING = 3;
  207. SQLITE_LOCK_EXCLUSIVE = 4;
  208. SQLITE_SYNC_NORMAL = $00002;
  209. SQLITE_SYNC_FULL = $00003;
  210. SQLITE_SYNC_DATAONLY = $00010;
  211. type
  212. psqlite3_io_methods = ^sqlite3_io_methods;
  213. psqlite3_file = ^sqlite3_file;
  214. sqlite3_file = record
  215. pMethods: psqlite3_io_methods; (* Methods for an open file *)
  216. end;
  217. sqlite3_io_methods = record
  218. iVersion : cint;
  219. Close : function(f: psqlite3_file): cint; stdcall;
  220. Read : function(f: psqlite3_file; addr: pointer; iAmt: cint; iOfst: sqlite3_int64): cint; stdcall;
  221. Write : function(f: psqlite3_file; size: sqlite3_int64): cint; stdcall;
  222. Truncate : function(f: psqlite3_file; size: sqlite3_int64): cint; stdcall;
  223. Sync : function(f: psqlite3_file; flags: cint): cint; stdcall;
  224. FileSize : function(f: psqlite3_file; pSize: psqlite3_int64): cint; stdcall;
  225. Lock : function(f: psqlite3_file; flags: cint): cint; stdcall;
  226. Unlock : function(f: psqlite3_file; flags: cint): cint; stdcall;
  227. CheckReservedLock : function(f: psqlite3_file): cint; stdcall;
  228. FileControl : function(f: psqlite3_file; op: cint; pArg: pointer): cint; stdcall;
  229. SectorSize : function(f: psqlite3_file): cint; stdcall;
  230. DeviceCharacteristics: function(f: psqlite3_file): cint; stdcall;
  231. xShmMap : function(f : psqlite3_file; iPg: cint; pgsz: cint; volatile : pointer) : cint;stdcall;
  232. xShmLock : function(f : psqlite3_file; offset: cint; n : cint; flags : cint) : cint; stdcall;
  233. xShmBarrier : procedure (f : psqlite3_file); stdcall;
  234. xShmUnmap : function(f : psqlite3_file; deleteFlag : cint) : cint; stdcall;
  235. (* Methods above are valid for version 2 *)
  236. xFetch : function(f: psqlite3_file; iOfst: sqlite3_int64; iAmt: cint; pp: PPointer) : cint; stdcall;
  237. xUnfetch : function(f: psqlite3_file; iOfst: sqlite3_int64; p: Pointer) : cint; stdcall;
  238. (* Methods above are valid for version 3 *)
  239. (* Additional methods may be added in future releases *)
  240. end;
  241. const
  242. SQLITE_FCNTL_LOCKSTATE = 1;
  243. SQLITE_FCNTL_GET_LOCKPROXYFILE = 2;
  244. SQLITE_FCNTL_SET_LOCKPROXYFILE = 3;
  245. SQLITE_FCNTL_LAST_ERRNO = 4;
  246. SQLITE_FCNTL_SIZE_HINT = 5;
  247. SQLITE_FCNTL_CHUNK_SIZE = 6;
  248. SQLITE_FCNTL_FILE_POINTER = 7;
  249. SQLITE_FCNTL_SYNC_OMITTED = 8;
  250. SQLITE_FCNTL_WIN32_AV_RETRY = 9;
  251. SQLITE_FCNTL_PERSIST_WAL = 10;
  252. SQLITE_FCNTL_OVERWRITE = 11;
  253. SQLITE_FCNTL_VFSNAME = 12;
  254. SQLITE_FCNTL_POWERSAFE_OVERWRITE = 13;
  255. SQLITE_FCNTL_PRAGMA = 14;
  256. SQLITE_FCNTL_BUSYHANDLER = 15;
  257. SQLITE_FCNTL_TEMPFILENAME = 16;
  258. SQLITE_FCNTL_MMAP_SIZE = 18;
  259. SQLITE_FCNTL_TRACE = 19;
  260. SQLITE_FCNTL_HAS_MOVED = 20;
  261. SQLITE_FCNTL_SYNC = 21;
  262. SQLITE_FCNTL_COMMIT_PHASETWO = 22;
  263. SQLITE_FCNTL_WIN32_SET_HANDLE = 23;
  264. SQLITE_FCNTL_WAL_BLOCK = 24;
  265. SQLITE_FCNTL_ZIPVFS = 25;
  266. SQLITE_FCNTL_RBU = 26;
  267. SQLITE_FCNTL_VFS_POINTER = 27;
  268. SQLITE_FCNTL_JOURNAL_POINTER = 28;
  269. (* deprecated names *)
  270. SQLITE_GET_LOCKPROXYFILE = SQLITE_FCNTL_GET_LOCKPROXYFILE;
  271. SQLITE_SET_LOCKPROXYFILE = SQLITE_FCNTL_SET_LOCKPROXYFILE;
  272. SQLITE_LAST_ERRNO = SQLITE_FCNTL_LAST_ERRNO;
  273. type
  274. psqlite3_mutex = ^sqlite3_mutex;
  275. sqlite3_mutex = record end;
  276. type
  277. psqlite3_vfs = ^sqlite3_vfs;
  278. sqlite3_vfs = record
  279. iVersion : cint; (* Structure version number *)
  280. szOsFile : cint; (* Size of subclassed sqlite3_file *)
  281. mxPathname : cint; (* Maximum file pathname length *)
  282. pNext : psqlite3_vfs; (* Next registered VFS *)
  283. zName : pansichar; (* Name of this virtual file system *)
  284. pAppData : ppointer; (* Pointer to application-specific *)
  285. Open : function(vfs: psqlite3_vfs; zName: pansichar; f: psqlite3_file; flags: cint; pOutFlags: pcint): cint; cdecl;
  286. Delete : function(vfs: psqlite3_vfs; zName: pansichar; syncDir: cint): cint; cdecl;
  287. Access : function(vfs: psqlite3_vfs; zName: pansichar; flags: cint): cint; cdecl;
  288. FullPathname : function(vfs: psqlite3_vfs; zName: pansichar; nOut: cint; zOut: pansichar): cint; cdecl;
  289. DlOpen : function(vfs: psqlite3_vfs; zFilename: pansichar): pointer; cdecl;
  290. DlError : procedure(vfs: psqlite3_vfs; nByte: cint; zErrMsg: pansichar); cdecl;
  291. DlSym : function(vfs: psqlite3_vfs; addr: pointer; zSymbol: pansichar): pointer; cdecl;
  292. DlClose : procedure(vfs: psqlite3_vfs; addr: pointer); cdecl;
  293. Randomness : function(vfs: psqlite3_vfs; nByte: cint; zOut: pansichar): cint; cdecl;
  294. Sleep : function(vfs: psqlite3_vfs; microseconds: cint): cint; cdecl;
  295. CurrentTime : function(vfs: psqlite3_vfs; time: pcdouble): cint; cdecl;
  296. GetLastError : function(vfs: psqlite3_vfs; code: cint; msg: pansichar): cint; cdecl;
  297. CurrentTimeInt64 : function(vfs: psqlite3_vfs; time: psqlite3_int64): cint; cdecl;
  298. xSetSystemCall : function(vfs: psqlite3_vfs; zName: pansichar; sqlite3_syscall_ptr : pointer) : cint; cdecl;
  299. xGetSystemCall : function(vfs: psqlite3_vfs; zName: pansichar) : pointer; cdecl;
  300. xNextSystemCall : function(vfs: psqlite3_vfs; zName: pansichar) : pansichar; cdecl;
  301. end;
  302. const
  303. SQLITE_ACCESS_EXISTS = 0;
  304. SQLITE_ACCESS_READWRITE = 1;
  305. SQLITE_ACCESS_READ = 2;
  306. SQLITE_SHM_UNLOCK = 1;
  307. SQLITE_SHM_LOCK = 2;
  308. SQLITE_SHM_SHARED = 4;
  309. SQLITE_SHM_EXCLUSIVE = 8;
  310. SQLITE_SHM_NLOCK = 8;
  311. {$IFDEF S}
  312. function sqlite3_initialize : cint;cdecl; external Sqlite3Lib;
  313. function sqlite3_shutdown : cint;cdecl; external Sqlite3Lib;
  314. function sqlite3_os_init : cint;cdecl; external Sqlite3Lib;
  315. function sqlite3_os_end : cint;cdecl; external Sqlite3Lib;
  316. {$endif}
  317. {$ifdef D}
  318. Var
  319. sqlite3_initialize,
  320. sqlite3_shutdown,
  321. sqlite3_os_init,
  322. sqlite3_os_end : Function : cint; cdecl;
  323. {$endif}
  324. {$IFDEF S}
  325. function sqlite3_config (a : cint): cint;cdecl;varargs; external Sqlite3Lib;
  326. {$ENDIF}
  327. {$IFDEF D}
  328. var
  329. sqlite3_config : function (a : cint): cint;cdecl;varargs;
  330. {$ENDIF}
  331. {$IFDEF S}
  332. function sqlite3_db_config (f : psqlite3; op : cint):cint;cdecl;varargs;external Sqlite3Lib;
  333. {$ENDIF}
  334. {$IFDEF D}
  335. var
  336. sqlite3_db_config : function (f : psqlite3; op : cint): cint;cdecl;varargs;
  337. {$ENDIF}
  338. Type
  339. sqlite3_mem_methods = record
  340. xMalloc : function(size : cint) : pointer;cdecl;
  341. xFree : procedure(p : pointer); cdecl;
  342. xRealloc : function(p : pointer;size : cint) : pointer;cdecl;
  343. xSize : function(p : pointer) : cint; cdecl;
  344. xRoundup : function(size : cint) : cint; cdecl;
  345. xInit : function(): cint; cdecl;
  346. xShutdown : procedure(p : pointer); cdecl;
  347. pAppData: pointer;
  348. end;
  349. Tsqlite3_mem_methods = sqlite3_mem_methods;
  350. Const
  351. SQLITE_CONFIG_SINGLETHREAD = 1;
  352. SQLITE_CONFIG_MULTITHREAD = 2;
  353. SQLITE_CONFIG_SERIALIZED = 3;
  354. SQLITE_CONFIG_MALLOC = 4;
  355. SQLITE_CONFIG_GETMALLOC = 5;
  356. SQLITE_CONFIG_SCRATCH = 6;
  357. SQLITE_CONFIG_PAGECACHE = 7;
  358. SQLITE_CONFIG_HEAP = 8;
  359. SQLITE_CONFIG_MEMSTATUS = 9;
  360. SQLITE_CONFIG_MUTEX = 10;
  361. SQLITE_CONFIG_GETMUTEX = 11;
  362. SQLITE_CONFIG_LOOKASIDE = 13;
  363. SQLITE_CONFIG_PCACHE = 14;
  364. SQLITE_CONFIG_GETPCACHE = 15;
  365. SQLITE_CONFIG_LOG = 16;
  366. SQLITE_CONFIG_URI = 17;
  367. SQLITE_CONFIG_PCACHE2 = 18; (* sqlite3_pcache_methods2* *)
  368. SQLITE_CONFIG_GETPCACHE2 = 19; (* sqlite3_pcache_methods2* *)
  369. SQLITE_CONFIG_COVERING_INDEX_SCAN = 20; (* int *)
  370. SQLITE_CONFIG_SQLLOG = 21; (* xSqllog, void* *)
  371. SQLITE_CONFIG_MMAP_SIZE = 22; (* sqlite3_int64, sqlite3_int64 *)
  372. SQLITE_CONFIG_WIN32_HEAPSIZE = 23; (* int nByte *)
  373. SQLITE_CONFIG_PCACHE_HDRSZ = 24; (* int *psz *)
  374. SQLITE_CONFIG_PMASZ = 25; (* unsigned int szPma *)
  375. SQLITE_CONFIG_STMTJRNL_SPILL = 26; (* int nByte *)
  376. SQLITE_DBCONFIG_LOOKASIDE = 1001;
  377. SQLITE_DBCONFIG_ENABLE_FKEY = 1002;
  378. SQLITE_DBCONFIG_ENABLE_TRIGGER = 1003;
  379. SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER = 1004;
  380. SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION = 1005;
  381. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_extended_result_codes{$IFDEF D}: function{$ENDIF}(db: psqlite3; onoff: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  382. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_last_insert_rowid{$IFDEF D}: function{$ENDIF}(db: psqlite3): sqlite3_int64; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  383. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_changes{$IFDEF D}: function{$ENDIF}(db: psqlite3): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  384. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_total_changes{$IFDEF D}: function{$ENDIF}(db: psqlite3): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  385. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_interrupt{$IFDEF D}: procedure{$ENDIF}(db: psqlite3); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  386. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_complete{$IFDEF D}: function{$ENDIF}(sql: pansichar): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  387. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_complete16{$IFDEF D}: function{$ENDIF}(sql: pansichar): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  388. type
  389. busyhandler_callback = function(user: pointer; cnt: cint): cint; cdecl;
  390. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_busy_handler{$IFDEF D}: function{$ENDIF}(db: psqlite3; cb: busyhandler_callback; user: pointer): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  391. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_busy_timeout{$IFDEF D}: function{$ENDIF}(db: psqlite3; ms: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  392. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_get_table{$IFDEF D}: function{$ENDIF}(
  393. db: psqlite3; (* An open database *)
  394. sql: pansichar; (* SQL to be evaluated *)
  395. pResult: pppansichar; (* Results of the query *)
  396. nrow: pcint; (* Number of result rows written here *)
  397. ncolumn: pcint; (* Number of result columns written here *)
  398. errmsg: ppansichar (* Error msg written here *)
  399. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  400. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_free_table{$IFDEF D}: procedure{$ENDIF}(result: ppansichar); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  401. //AnsiChar *sqlite3_mprintf(const AnsiChar*,...);
  402. //AnsiChar *sqlite3_vmprintf(const AnsiChar*, va_list);
  403. //AnsiChar *sqlite3_snprintf(int,AnsiChar*,const AnsiChar*, ...);
  404. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_malloc{$IFDEF D}: function{$ENDIF}(size: cint): pointer;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  405. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_malloc64{$IFDEF D}: function{$ENDIF}(size: sqlite3_uint64): pointer;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  406. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_realloc{$IFDEF D}: function{$ENDIF}(ptr: pointer; size: cint): pointer;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  407. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_realloc64{$IFDEF D}: function{$ENDIF}(ptr: pointer; size: sqlite3_uint64): pointer;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  408. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_free{$IFDEF D}: procedure{$ENDIF}(ptr: pointer);cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  409. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_msize{$IFDEF D}: function{$ENDIF}(ptr: pointer): sqlite3_uint64;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  410. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_memory_used{$IFDEF D}: function{$ENDIF}(): sqlite3_int64; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  411. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_memory_highwater{$IFDEF D}: function{$ENDIF}(resetFlag: cint): sqlite3_int64; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  412. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_randomness{$IFDEF D}: procedure{$ENDIF}(N: cint; P: pointer); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  413. type
  414. xAuth = function(pUserData: pointer; code: cint; s1, s2, s3, s4: pansichar): cint; cdecl;
  415. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_set_authorizer{$IFDEF D}: function{$ENDIF}(
  416. db: psqlite3;
  417. cb: xAuth;
  418. pUserData: pointer
  419. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  420. const
  421. SQLITE_DENY = 1; (* Abort the SQL statement with an error *)
  422. SQLITE_IGNORE = 2; (* Don't allow access, but don't generate an error *)
  423. const
  424. SQLITE_CREATE_INDEX = 1; (* Index Name Table Name *)
  425. SQLITE_CREATE_TABLE = 2; (* Table Name NULL *)
  426. SQLITE_CREATE_TEMP_INDEX = 3; (* Index Name Table Name *)
  427. SQLITE_CREATE_TEMP_TABLE = 4; (* Table Name NULL *)
  428. SQLITE_CREATE_TEMP_TRIGGER = 5; (* Trigger Name Table Name *)
  429. SQLITE_CREATE_TEMP_VIEW = 6; (* View Name NULL *)
  430. SQLITE_CREATE_TRIGGER = 7; (* Trigger Name Table Name *)
  431. SQLITE_CREATE_VIEW = 8; (* View Name NULL *)
  432. SQLITE_DELETE = 9; (* Table Name NULL *)
  433. SQLITE_DROP_INDEX = 10; (* Index Name Table Name *)
  434. SQLITE_DROP_TABLE = 11; (* Table Name NULL *)
  435. SQLITE_DROP_TEMP_INDEX = 12; (* Index Name Table Name *)
  436. SQLITE_DROP_TEMP_TABLE = 13; (* Table Name NULL *)
  437. SQLITE_DROP_TEMP_TRIGGER = 14; (* Trigger Name Table Name *)
  438. SQLITE_DROP_TEMP_VIEW = 15; (* View Name NULL *)
  439. SQLITE_DROP_TRIGGER = 16; (* Trigger Name Table Name *)
  440. SQLITE_DROP_VIEW = 17; (* View Name NULL *)
  441. SQLITE_INSERT = 18; (* Table Name NULL *)
  442. SQLITE_PRAGMA = 19; (* Pragma Name 1st arg or NULL *)
  443. SQLITE_READ = 20; (* Table Name Column Name *)
  444. SQLITE_SELECT = 21; (* NULL NULL *)
  445. SQLITE_TRANSACTION = 22; (* NULL NULL *)
  446. SQLITE_UPDATE = 23; (* Table Name Column Name *)
  447. SQLITE_ATTACH = 24; (* Filename NULL *)
  448. SQLITE_DETACH = 25; (* Database Name NULL *)
  449. SQLITE_ALTER_TABLE = 26; (* Database Name Table Name *)
  450. SQLITE_REINDEX = 27; (* Index Name NULL *)
  451. SQLITE_ANALYZE = 28; (* Table Name NULL *)
  452. SQLITE_CREATE_VTABLE = 29; (* Table Name Module Name *)
  453. SQLITE_DROP_VTABLE = 30; (* Table Name Module Name *)
  454. SQLITE_FUNCTION = 31; (* Function Name NULL *)
  455. SQLITE_SAVEPOINT = 32; (* Operation Savepoint Name *)
  456. SQLITE_COPY = 0; (* No longer used *)
  457. SQLITE_RECURSIVE = 33; (* NULL NULL *)
  458. type
  459. xTrace = procedure(user: pointer; s: pansichar); cdecl; deprecated;
  460. xProfile = procedure(user: pointer; s: pansichar; i: sqlite3_uint64); cdecl; deprecated;
  461. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_trace{$IFDEF D}: function{$ENDIF}(db: psqlite3; cb: xTrace; user: pointer): pointer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  462. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_profile{$IFDEF D}: function{$ENDIF}(db: psqlite3; cb: xProfile; user: pointer): pointer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  463. type
  464. progress_callback = function(user: pointer): cint; cdecl;
  465. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_progress_handler{$IFDEF D}: procedure{$ENDIF}(db: psqlite3; i: cint; cb: progress_callback; user: pointer); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  466. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_open{$IFDEF D}: function{$ENDIF}(
  467. filename: pansichar; (* Database filename (UTF-8) *)
  468. ppDb: ppsqlite3 (* OUT: SQLite db handle *)
  469. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  470. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_open16{$IFDEF D}: function{$ENDIF}(
  471. filename: pwidechar; (* Database filename (UTF-16) *)
  472. ppDb: ppsqlite3 (* OUT: SQLite db handle *)
  473. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  474. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_open_v2{$IFDEF D}: function{$ENDIF}(
  475. filename: pansichar; (* Database filename (UTF-8) *)
  476. ppDb: ppsqlite3; (* OUT: SQLite db handle *)
  477. flags: cint; (* Flags *)
  478. zVfs: pansichar (* Name of VFS module to use *)
  479. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  480. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_uri_parameter{$IFDEF D}: function{$ENDIF}(zFilename : pansichar; zParam: pansichar) : pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  481. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_uri_boolean{$IFDEF D}: function{$ENDIF}(zFile : pansichar; zParam :pansichar; bDefault: cint) : cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  482. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_uri_int64{$IFDEF D}: function{$ENDIF}(zFile : pansichar; zParam :pansichar; iDefault: sqlite3_int64) : sqlite3_int64; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  483. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_errcode{$IFDEF D}: function{$ENDIF}(db: psqlite3): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  484. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_extended_errcode{$IFDEF D}: function{$ENDIF}(db: psqlite3): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  485. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_errmsg{$IFDEF D}: function{$ENDIF}(db: psqlite3): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  486. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_errmsg16{$IFDEF D}: function{$ENDIF}(db: psqlite3): pwidechar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  487. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_errstr{$IFDEF D}: function{$ENDIF}(errCode: cint): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  488. type
  489. ppsqlite3_stmt = ^psqlite3_stmt;
  490. psqlite3_stmt = ^sqlite3_stmt;
  491. sqlite3_stmt = record end;
  492. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_limit{$IFDEF D}: function{$ENDIF}(db: psqlite3; id: cint; newVal: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  493. const
  494. SQLITE_LIMIT_LENGTH = 0;
  495. SQLITE_LIMIT_SQL_LENGTH = 1;
  496. SQLITE_LIMIT_COLUMN = 2;
  497. SQLITE_LIMIT_EXPR_DEPTH = 3;
  498. SQLITE_LIMIT_COMPOUND_SELECT = 4;
  499. SQLITE_LIMIT_VDBE_OP = 5;
  500. SQLITE_LIMIT_FUNCTION_ARG = 6;
  501. SQLITE_LIMIT_ATTACHED = 7;
  502. SQLITE_LIMIT_LIKE_PATTERN_LENGTH = 8;
  503. SQLITE_LIMIT_VARIABLE_NUMBER = 9;
  504. SQLITE_LIMIT_TRIGGER_DEPTH = 10;
  505. SQLITE_LIMIT_WORKER_THREADS = 11;
  506. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_prepare{$IFDEF D}: function{$ENDIF}(
  507. db: psqlite3; (* Database handle *)
  508. zSql: pansichar; (* SQL statement, UTF-8 encoded *)
  509. nByte: cint; (* Maximum length of zSql in bytes. *)
  510. ppStmt: ppsqlite3_stmt; (* OUT: Statement handle *)
  511. pzTail: ppansichar (* OUT: Pointer to unused portion of zSql *)
  512. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  513. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_prepare_v2{$IFDEF D}: function{$ENDIF}(
  514. db: psqlite3; (* Database handle *)
  515. zSql: pansichar; (* SQL statement, UTF-8 encoded *)
  516. nByte: cint; (* Maximum length of zSql in bytes. *)
  517. ppStmt: ppsqlite3_stmt; (* OUT: Statement handle *)
  518. pzTail: ppansichar (* OUT: Pointer to unused portion of zSql *)
  519. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  520. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_prepare16{$IFDEF D}: function{$ENDIF}(
  521. db: psqlite3; (* Database handle *)
  522. zSql: pwidechar; (* SQL statement, UTF-16 encoded *)
  523. nByte: cint; (* Maximum length of zSql in bytes. *)
  524. ppStmt: ppsqlite3_stmt; (* OUT: Statement handle *)
  525. pzTail: ppwidechar (* OUT: Pointer to unused portion of zSql *)
  526. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  527. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_prepare16_v2{$IFDEF D}: function{$ENDIF}(
  528. db: psqlite3; (* Database handle *)
  529. zSql: pwidechar; (* SQL statement, UTF-16 encoded *)
  530. nByte: cint; (* Maximum length of zSql in bytes. *)
  531. ppStmt: ppsqlite3_stmt; (* OUT: Statement handle *)
  532. pzTail: ppwidechar (* OUT: Pointer to unused portion of zSql *)
  533. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  534. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_sql{$IFDEF D}: function{$ENDIF}(pStmt: psqlite3_stmt): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  535. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_expanded_sql{$IFDEF D}: function{$ENDIF}(pStmt: psqlite3_stmt): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  536. type
  537. ppsqlite3_value = ^psqlite3_value;
  538. psqlite3_value = ^sqlite3_value;
  539. sqlite3_value = record end;
  540. psqlite3_context = ^sqlite3_context;
  541. sqlite3_context = record end;
  542. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_blob{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint; V: pointer; L: cint; D: sqlite3_destructor_type): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  543. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_blob64{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint; V: pointer; L: sqlite3_uint64; D: sqlite3_destructor_type): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  544. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_double{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint; V: cdouble): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  545. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_int{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint; V: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  546. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_int64{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint; V: sqlite3_int64): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  547. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_null{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  548. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_text{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint; V: pansichar; L: cint; D: sqlite3_destructor_type): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  549. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_text16{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint; V: pwidechar; L: cint; D: sqlite3_destructor_type): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  550. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_text64{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint; V: pansichar; L: sqlite3_uint64; D: sqlite3_destructor_type; encoding: cuchar): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  551. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_value{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint; V: psqlite3_value): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  552. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_zeroblob{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint; V: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  553. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_zeroblob64{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint; V: sqlite3_uint64): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  554. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_parameter_count{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  555. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_parameter_name{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  556. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_bind_parameter_index{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; zName: pansichar): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  557. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_clear_bindings{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  558. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_count{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  559. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_name{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  560. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_name16{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): pwidechar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  561. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_database_name{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  562. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_database_name16{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): pwidechar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  563. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_table_name{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  564. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_table_name16{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): pwidechar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  565. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_origin_name{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  566. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_origin_name16{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): pwidechar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  567. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_decltype{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  568. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_decltype16{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; N: cint): pwidechar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  569. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_step{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  570. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_data_count{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  571. const
  572. SQLITE_INTEGER = 1;
  573. SQLITE_FLOAT = 2;
  574. SQLITE_BLOB = 4;
  575. SQLITE_NULL = 5;
  576. SQLITE_TEXT = 3;
  577. SQLITE3_TEXT = 3;
  578. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_blob{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; iCol: cint): pointer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  579. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_bytes{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; iCol: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  580. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_bytes16{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; iCol: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  581. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_double{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; iCol: cint): cdouble; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  582. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_int{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; iCol: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  583. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_int64{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; iCol: cint): sqlite3_int64; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  584. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_text{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; iCol: cint): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  585. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_text16{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; iCol: cint): pwidechar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  586. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_type{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; iCol: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  587. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_column_value{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; iCol: cint): psqlite3_value; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  588. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_finalize{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  589. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_reset{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  590. type
  591. xFunc = procedure(ctx: psqlite3_context; N: cint; V: ppsqlite3_value); cdecl;
  592. xStep = procedure(ctx: psqlite3_context; N: cint; V: ppsqlite3_value); cdecl;
  593. xFinal = procedure(ctx: psqlite3_context); cdecl;
  594. xDestroy = sqlite3_destructor_type;
  595. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_create_function{$IFDEF D}: function{$ENDIF}(
  596. db: psqlite3;
  597. zFunctionName: pansichar;
  598. nArg: cint;
  599. eTextRep: cint;
  600. pApp: pointer;
  601. funccb: xFunc;
  602. stepcb: xStep;
  603. finalcb: xFinal
  604. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  605. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_create_function16{$IFDEF D}: function{$ENDIF}(
  606. db: psqlite3;
  607. zFunctionName: pwidechar;
  608. nArg: cint;
  609. eTextRep: cint;
  610. pApp: pointer;
  611. funccb: xFunc;
  612. stepcb: xStep;
  613. finalcb: xFinal
  614. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  615. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_create_function_v2{$IFDEF D}: function{$ENDIF}(
  616. db: psqlite3;
  617. zFunctionName: pansichar;
  618. nArg: cint;
  619. eTextRep: cint;
  620. pApp: pointer;
  621. funccb: xFunc;
  622. stepcb: xStep;
  623. finalcb: xFinal;
  624. destroycb : xDestroy
  625. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  626. const
  627. SQLITE_UTF8 = 1;
  628. SQLITE_UTF16LE = 2;
  629. SQLITE_UTF16BE = 3;
  630. SQLITE_UTF16 = 4; (* Use native byte order *)
  631. SQLITE_ANY = 5; (* Deprecated *)
  632. SQLITE_UTF16_ALIGNED = 8; (* sqlite3_create_collation only *)
  633. SQLITE_DETERMINISTIC = $800;
  634. {$IFDEF SQLITE_OBSOLETE}
  635. type
  636. memory_alarm_cb = function(user: pointer; i64: sqlite3_int64; i: cint): pointer; cdecl;
  637. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_aggregate_count{$IFDEF D}: function{$ENDIF}(ctx: psqlite3_context): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  638. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_expired{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  639. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_transfer_bindings{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt; stmt2: psqlite3_stmt): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  640. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_global_recover{$IFDEF D}: function{$ENDIF}(): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  641. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_thread_cleanup{$IFDEF D}: procedure{$ENDIF}(); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  642. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_memory_alarm{$IFDEF D}: function{$ENDIF}(cb: memory_alarm_cb; user: pointer; i64: sqlite3_int64): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  643. {$ENDIF}
  644. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_blob{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): pointer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  645. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_bytes{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  646. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_bytes16{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  647. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_double{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): cdouble; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  648. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_int{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  649. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_int64{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): sqlite3_int64; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  650. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_text{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  651. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_text16{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): pwidechar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  652. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_text16le{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): pwidechar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  653. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_text16be{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): pwidechar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  654. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_type{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  655. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_numeric_type{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  656. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_subtype{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): cuint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  657. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_value_dup{$IFDEF D}: function{$ENDIF}(val: psqlite3_value): psqlite3_value; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  658. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_value_free{$IFDEF D}: procedure{$ENDIF}(val: psqlite3_value); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  659. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_aggregate_context{$IFDEF D}: function{$ENDIF}(ctx: psqlite3_context; nBytes: cint): pointer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  660. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_user_data{$IFDEF D}: function{$ENDIF}(ctx: psqlite3_context): pointer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  661. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_context_db_handle{$IFDEF D}: function{$ENDIF}(ctx: psqlite3_context): psqlite3; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  662. type
  663. set_auxdata_cb = function(p: pointer): pointer; cdecl;
  664. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_get_auxdata{$IFDEF D}: function{$ENDIF}(ctx: psqlite3_context; N: cint): pointer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  665. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_set_auxdata{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; N: cint; P: pointer; cb: set_auxdata_cb); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  666. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_blob{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: pointer; N: cint; D: sqlite3_destructor_type); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  667. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_blob64{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: pointer; N: sqlite3_uint64; D: sqlite3_destructor_type); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  668. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_double{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: cdouble); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  669. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_error{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: pansichar; N: cint); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  670. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_error16{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: pwidechar; N: cint); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  671. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_error_toobig{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  672. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_error_nomem{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  673. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_error_code{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: cint); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  674. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_int{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: cint); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  675. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_int64{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: sqlite3_int64); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  676. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_null{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  677. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_text{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: pansichar; N: cint; D: sqlite3_destructor_type); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  678. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_text64{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: pansichar; N: sqlite3_uint64; D: sqlite3_destructor_type; encoding: cuchar); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  679. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_text16{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: pwidechar; N: cint; D: sqlite3_destructor_type); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  680. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_text16le{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: pwidechar; N: cint; D: sqlite3_destructor_type); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  681. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_text16be{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: pwidechar; N: cint; D: sqlite3_destructor_type); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  682. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_value{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; V: psqlite3_value); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  683. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_result_zeroblob{$IFDEF D}: procedure{$ENDIF}(ctx: psqlite3_context; N: cint); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  684. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_result_zeroblob64{$IFDEF D}: function{$ENDIF}(ctx: psqlite3_context; N: sqlite3_uint64): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  685. type
  686. xCompare = function(user: pointer; A: cint; B: pointer; C: cint; D: pointer): cint; cdecl;
  687. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_create_collation{$IFDEF D}: function{$ENDIF}(
  688. db: psqlite3;
  689. zName: pansichar;
  690. eTextRep: cint;
  691. user: pointer;
  692. xcomparecb: xCompare
  693. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  694. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_create_collation_v2{$IFDEF D}: function{$ENDIF}(
  695. db: psqlite3;
  696. zName: pansichar;
  697. eTextRep: cint;
  698. user: pointer;
  699. xcomparecb: xCompare;
  700. xdestroycb: xDestroy
  701. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  702. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_create_collation16{$IFDEF D}: function{$ENDIF}(
  703. db: psqlite3;
  704. zName: pwidechar;
  705. eTextRep: cint;
  706. user: pointer;
  707. xcomparecb: xCompare
  708. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  709. type
  710. collation_needed_cb = function(user: pointer; db: psqlite3; eTextRep: cint; s: pansichar): pointer; cdecl;
  711. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_collation_needed{$IFDEF D}: function{$ENDIF}(
  712. db: psqlite3;
  713. user: pointer;
  714. cb: collation_needed_cb
  715. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  716. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_collation_needed16{$IFDEF D}: function{$ENDIF}(
  717. db: psqlite3;
  718. user: pointer;
  719. cb: collation_needed_cb
  720. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  721. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_key{$IFDEF D}: function{$ENDIF}(
  722. db: psqlite3; (* Database to be rekeyed *)
  723. pKey: pointer; nKey: cint (* The key *)
  724. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  725. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_key_v2{$IFDEF D}: function{$ENDIF}(
  726. db: psqlite3; (* Database to be rekeyed *)
  727. zDbName: pansichar; (* Name of the database *)
  728. pKey: pointer; nKey: cint (* The key *)
  729. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  730. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_rekey{$IFDEF D}: function{$ENDIF}(
  731. db: psqlite3; (* Database to be rekeyed *)
  732. pKey: pointer; nKey: cint (* The new key *)
  733. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  734. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_rekey_v2{$IFDEF D}: function{$ENDIF}(
  735. db: psqlite3; (* Database to be rekeyed *)
  736. zDbName: pansichar; (* Name of the database *)
  737. pKey: pointer; nKey: cint (* The new key *)
  738. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  739. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_sleep{$IFDEF D}: function{$ENDIF}(M: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  740. {$ifndef win32}
  741. var
  742. sqlite3_temp_directory: pansichar; cvar; external {Sqlite3Lib};
  743. sqlite3_data_directory: pansichar; cvar; external {Sqlite3Lib};
  744. {$endif}
  745. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_get_autocommit{$IFDEF D}: function{$ENDIF}(db: psqlite3): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  746. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_db_handle{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt): psqlite3; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  747. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_db_filename{$IFDEF D}: function{$ENDIF}(db: psqlite3; zDbName: pansichar): pansichar; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  748. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_db_readonly{$IFDEF D}: function{$ENDIF}(db: psqlite3; zDbName: pansichar): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  749. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_next_stmt{$IFDEF D}: function{$ENDIF}(db: psqlite3;stmt: psqlite3_stmt):psqlite3_stmt;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  750. type
  751. commit_callback = function(user: pointer): cint; cdecl;
  752. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_commit_hook{$IFDEF D}: function{$ENDIF}(db: psqlite3; cb: commit_callback; user: pointer): pointer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  753. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_rollback_hook{$IFDEF D}: function{$ENDIF}(db: psqlite3; cb: sqlite3_destructor_type; user: pointer): pointer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  754. type
  755. update_callback = procedure(user: pointer; event: cint; database, table: pansichar; rowid: sqlite3_int64); cdecl;
  756. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_update_hook{$IFDEF D}: function{$ENDIF}(db: psqlite3; cb: update_callback; user: pointer): pointer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  757. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_enable_shared_cache{$IFDEF D}: function{$ENDIF}(B: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  758. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_release_memory{$IFDEF D}: function{$ENDIF}(N: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  759. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_db_release_memory{$IFDEF D}: function{$ENDIF}(db: psqlite3): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  760. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_soft_heap_limit{$IFDEF D}: procedure{$ENDIF}(N: cint); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  761. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_soft_heap_limit64{$IFDEF D}: function{$ENDIF}(N: int64):int64;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  762. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_table_column_metadata{$IFDEF D}: function{$ENDIF}(
  763. db: psqlite3; (* Connection handle *)
  764. zDbName: pansichar; (* Database name or NULL *)
  765. zTableName: pansichar; (* Table name *)
  766. zColumnName: pansichar; (* Column name *)
  767. pzDataType: ppansichar; (* OUTPUT: Declared data type *)
  768. pzCollSeq: ppansichar; (* OUTPUT: Collation sequence name *)
  769. pNotNull: pcint; (* OUTPUT: True if NOT NULL constracint exists *)
  770. pPrimaryKey: pcint; (* OUTPUT: True if column part of PK *)
  771. pAutoinc: pcint (* OUTPUT: True if column is auto-increment *)
  772. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  773. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_load_extension{$IFDEF D}: function{$ENDIF}(
  774. db: psqlite3; (* Load the extension cinto this database connection *)
  775. zFile: pansichar; (* Name of the shared library containing extension *)
  776. zProc: pansichar; (* Entry point. Derived from zFile if 0 *)
  777. pzErrMsg: ppansichar (* Put error message here if not 0 *)
  778. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  779. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_enable_load_extension{$IFDEF D}: function{$ENDIF}(db: psqlite3; onoff: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  780. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_auto_extension{$IFDEF D}: function{$ENDIF}(xEntrypoint: pointer): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  781. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_cancel_auto_extension{$IFDEF D}: function{$ENDIF}(xEntrypoint: pointer): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  782. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_reset_auto_extension{$IFDEF D}: procedure{$ENDIF}(); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  783. type
  784. psqlite3_module = ^sqlite3_module;
  785. sqlite3_module = record{
  786. iVersion : cint;
  787. // xCreate : function(db: psqlite3; pAux: pointer; argc: cint; ): cint; cdecl;
  788. cint (*xCreate)(db: psqlite3; void *pAux;
  789. cint argc; const AnsiChar *const*argv;
  790. sqlite3_vtab **ppVTab; AnsiChar**);
  791. cint (*xConnect)(db: psqlite3; void *pAux;
  792. cint argc; const AnsiChar *const*argv;
  793. sqlite3_vtab **ppVTab; AnsiChar**);
  794. cint (*xBestIndex)(sqlite3_vtab *pVTab; sqlite3_index_info*);
  795. cint (*xDisconnect)(sqlite3_vtab *pVTab);
  796. cint (*xDestroy)(sqlite3_vtab *pVTab);
  797. cint (*xOpen)(sqlite3_vtab *pVTab; sqlite3_vtab_cursor **ppCursor);
  798. cint (*xClose)(sqlite3_vtab_cursor*);
  799. cint (*xFilter)(sqlite3_vtab_cursor*; cint idxNum; const AnsiChar *idxStr;
  800. cint argc; sqlite3_value **argv);
  801. xNext : function(pVCurs: sqlite3_vtab_cursor): cint; cdecl;
  802. xEof : function(pVCurs: sqlite3_vtab_cursor): cint; cdecl;
  803. xColumn : function(pVCurs: sqlite3_vtab_cursor; ctx: psqlite3_context; i: cint): cint; cdecl;
  804. xRowid : function(pVCurs: sqlite3_vtab_cursor; var pRowid: sqlite3_int64): cint; cdecl;
  805. xUpdate : function(pVtab: psqlite3_vtab; var v: psqlite3_value; var p: sqlite3_int64): cint; cdecl;
  806. xBegin : function(pVtab: psqlite3_vtab): cint; cdecl;
  807. xSync : function(pVtab: psqlite3_vtab): cint; cdecl;
  808. xCommit : function(pVtab: psqlite3_vtab): cint; cdecl;
  809. xRollback : function(pVtab: psqlite3_vtab): cint; cdecl;
  810. xFindFunction : function(pVtab: psqlite3_vtab; nArg: cint; zName: pansichar; var pxFunc: xFunc; var ppArg: pointer): cint; cdecl;
  811. xRename : function(pVtab: psqlite3_vtab; zNew: pansichar): cint; cdecl;
  812. }end;
  813. {.$WARNING TODO}
  814. type
  815. psqlite3_index_constracint = ^sqlite3_index_constracint;
  816. sqlite3_index_constracint = record
  817. iColumn: cint; (* Column constrained. -1 for ROWID *)
  818. op: AnsiChar; (* Constracint operator *)
  819. usable: AnsiChar; (* True if this constracint is usable *)
  820. iTermOffset: cint; (* Used cinternally - xBestIndex should ignore *)
  821. end;
  822. psqlite3_index_orderby = ^sqlite3_index_orderby;
  823. sqlite3_index_orderby = record
  824. iColumn: cint; (* Column number *)
  825. desc: AnsiChar; (* True for DESC. False for ASC. *)
  826. end;
  827. psqlite3_index_constracint_usage = ^sqlite3_index_constracint_usage;
  828. sqlite3_index_constracint_usage = record
  829. argvIndex: cint; (* if >0; constracint is part of argv to xFilter *)
  830. omit: AnsiChar; (* Do not code a test for this constracint *)
  831. end;
  832. psqlite3_index_info = ^sqlite3_index_info;
  833. sqlite3_index_info = record
  834. (* Inputs *)
  835. nConstracint: cint; (* Number of entries in aConstracint *)
  836. aConstracint: psqlite3_index_constracint;
  837. nOrderBy: cint; (* Number of terms in the ORDER BY clause *)
  838. aOrderBy: psqlite3_index_orderby;
  839. (* Outputs *)
  840. aConstracintUsage: psqlite3_index_constracint_usage;
  841. idxNum: cint; (* Number used to identify the index *)
  842. idxStr: pansichar; (* String; possibly obtained from sqlite3_malloc *)
  843. needToFreeIdxStr: cint; (* Free idxStr using sqlite3_free() if true *)
  844. orderByConsumed: cint; (* True if output is already ordered *)
  845. estimatedCost: cdouble; (* Estimated cost of using this index *)
  846. (* Fields below are only available in SQLite 3.8.2 and later *)
  847. estimatedRows: sqlite3_int64; (* Estimated number of rows returned *)
  848. (* Fields below are only available in SQLite 3.9.0 and later *)
  849. idxFlags: cint ; (* Mask of SQLITE_INDEX_SCAN_* flags *)
  850. (* Fields below are only available in SQLite 3.10.0 and later *)
  851. colUsed: sqlite3_uint64; (* Input: Mask of columns used by statement *)
  852. end;
  853. const
  854. SQLITE_INDEX_SCAN_UNIQUE = 1;
  855. SQLITE_INDEX_CONSTRAINT_EQ = 2;
  856. SQLITE_INDEX_CONSTRAINT_GT = 4;
  857. SQLITE_INDEX_CONSTRAINT_LE = 8;
  858. SQLITE_INDEX_CONSTRAINT_LT = 16;
  859. SQLITE_INDEX_CONSTRAINT_GE = 32;
  860. SQLITE_INDEX_CONSTRAINT_MATCH = 64;
  861. SQLITE_INDEX_CONSTRAINT_LIKE = 65;
  862. SQLITE_INDEX_CONSTRAINT_GLOB = 66;
  863. SQLITE_INDEX_CONSTRAINT_REGEXP= 67;
  864. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_create_module{$IFDEF D}: function{$ENDIF}(
  865. db: psqlite3; (* SQLite connection to register module with *)
  866. zName: pansichar; (* Name of the module *)
  867. module: psqlite3_module; (* Methods for the module *)
  868. user: pointer (* Client data for xCreate/xConnect *)
  869. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  870. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_create_module_v2{$IFDEF D}: function{$ENDIF}(
  871. db: psqlite3; (* SQLite connection to register module with *)
  872. zName: pansichar; (* Name of the module *)
  873. module: psqlite3_module; (* Methods for the module *)
  874. user: pointer; (* Client data for xCreate/xConnect *)
  875. xdestroycb: xDestroy (* Module destructor function *)
  876. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  877. type
  878. psqlite3_vtab = ^sqlite3_vtab;
  879. sqlite3_vtab = record
  880. pModule: psqlite3_module; (* The module for this virtual table *)
  881. nRef: cint; (* Used cinternally *)
  882. zErrMsg: pansichar; (* Error message from sqlite3_mprcintf() *)
  883. (* Virtual table implementations will typically add additional fields *)
  884. end;
  885. type
  886. psqlite3_vtab_cursor = ^sqlite3_vtab_cursor;
  887. sqlite3_vtab_cursor = record
  888. pVtab: psqlite3_vtab; (* Virtual table of this cursor *)
  889. (* Virtual table implementations will typically add additional fields *)
  890. end;
  891. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_declare_vtab{$IFDEF D}: function{$ENDIF}(db: psqlite3; zCreateTable: pansichar): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  892. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_overload_function{$IFDEF D}: function{$ENDIF}(db: psqlite3; zFuncName: pansichar; nArg: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  893. type
  894. ppsqlite3_blob = ^psqlite3_blob;
  895. psqlite3_blob = ^sqlite3_blob;
  896. sqlite3_blob = record end;
  897. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_blob_open{$IFDEF D}: function{$ENDIF}(
  898. db: psqlite3;
  899. zDb: pansichar;
  900. zTable: pansichar;
  901. zColumn: pansichar;
  902. iRow: sqlite3_int64;
  903. flags: cint;
  904. ppBlob: ppsqlite3_blob
  905. ): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  906. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_blob_reopen{$IFDEF D}: function{$ENDIF}(blob: psqlite3_blob;p:sqlite3_int64): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  907. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_blob_close{$IFDEF D}: function{$ENDIF}(blob: psqlite3_blob): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  908. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_blob_bytes{$IFDEF D}: function{$ENDIF}(blob: psqlite3_blob): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  909. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_blob_read{$IFDEF D}: function{$ENDIF}(blob: psqlite3_blob; Z: pointer; N: cint; iOffset: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  910. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_blob_write{$IFDEF D}: function{$ENDIF}(blob: psqlite3_blob; Z: pointer; N: cint; iOffset: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  911. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_vfs_find{$IFDEF D}: function{$ENDIF}(zVfsName: pansichar): psqlite3_vfs; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  912. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_vfs_register{$IFDEF D}: function{$ENDIF}(vfs: psqlite3_vfs; makeDflt: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  913. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_vfs_unregister{$IFDEF D}: function{$ENDIF}(vfs: psqlite3_vfs): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  914. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_mutex_alloc{$IFDEF D}: function{$ENDIF}(n: cint): psqlite3_mutex; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  915. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_mutex_free{$IFDEF D}: procedure{$ENDIF}(mtx: psqlite3_mutex); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  916. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_mutex_enter{$IFDEF D}: procedure{$ENDIF}(mtx: psqlite3_mutex); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  917. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_mutex_try{$IFDEF D}: function{$ENDIF}(mtx: psqlite3_mutex): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  918. {$IFDEF S}procedure{$ELSE}var{$ENDIF}sqlite3_mutex_leave{$IFDEF D}: procedure{$ENDIF}(mtx: psqlite3_mutex); cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  919. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_mutex_held{$IFDEF D}: function{$ENDIF}(mtx: psqlite3_mutex): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  920. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_mutex_notheld{$IFDEF D}: function{$ENDIF}(mtx: psqlite3_mutex): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  921. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_db_mutex{$IFDEF D}: function{$ENDIF}(db: psqlite3): psqlite3_mutex; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  922. const
  923. SQLITE_MUTEX_FAST = 0;
  924. SQLITE_MUTEX_RECURSIVE = 1;
  925. SQLITE_MUTEX_STATIC_MASTER = 2;
  926. SQLITE_MUTEX_STATIC_MEM = 3; (* sqlite3_malloc() *)
  927. SQLITE_MUTEX_STATIC_MEM2 = 4; (* sqlite3_release_memory() *)
  928. SQLITE_MUTEX_STATIC_PRNG = 5; (* sqlite3_random() *)
  929. SQLITE_MUTEX_STATIC_LRU = 6; (* lru page list *)
  930. SQLITE_MUTEX_STATIC_LRU2 = 7; (* lru page list *)
  931. SQLITE_MUTEX_STATIC_APP1 = 8; (* For use by application *)
  932. SQLITE_MUTEX_STATIC_APP2 = 9; (* For use by application *)
  933. SQLITE_MUTEX_STATIC_APP3 = 10; (* For use by application *)
  934. SQLITE_MUTEX_STATIC_VFS1 = 11; (* For use by built-in VFS *)
  935. SQLITE_MUTEX_STATIC_VFS2 = 12; (* For use by extension VFS *)
  936. SQLITE_MUTEX_STATIC_VFS3 = 13; (* For use by application VFS *)
  937. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_file_control{$IFDEF D}: function{$ENDIF}(db: psqlite3; zDbName: pansichar; op: cint; p: pointer): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  938. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_test_control{$IFDEF D}: function{$ENDIF}(op: cint; args: array of const): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  939. const
  940. SQLITE_TESTCTRL_FAULT_CONFIG = 1;
  941. SQLITE_TESTCTRL_FAULT_FAILURES = 2;
  942. SQLITE_TESTCTRL_FAULT_BENIGN_FAILURES = 3;
  943. SQLITE_TESTCTRL_FAULT_PENDING = 4;
  944. SQLITE_TESTCTRL_PRNG_SAVE = 5;
  945. SQLITE_TESTCTRL_PRNG_RESTORE = 6;
  946. SQLITE_TESTCTRL_PRNG_RESET = 7;
  947. SQLITE_TESTCTRL_BITVEC_TEST = 8;
  948. SQLITE_TESTCTRL_FAULT_INSTALL = 9;
  949. SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS = 10;
  950. SQLITE_TESTCTRL_PENDING_BYTE = 11;
  951. SQLITE_TESTCTRL_ASSERT = 12;
  952. SQLITE_TESTCTRL_ALWAYS = 13;
  953. SQLITE_TESTCTRL_RESERVE = 14;
  954. SQLITE_TESTCTRL_OPTIMIZATIONS = 15;
  955. SQLITE_TESTCTRL_ISKEYWORD = 16;
  956. SQLITE_TESTCTRL_SCRATCHMALLOC = 17;
  957. SQLITE_TESTCTRL_LOCALTIME_FAULT = 18;
  958. SQLITE_TESTCTRL_EXPLAIN_STMT = 19; (* NOT USED *)
  959. SQLITE_TESTCTRL_NEVER_CORRUPT = 20;
  960. SQLITE_TESTCTRL_VDBE_COVERAGE = 21;
  961. SQLITE_TESTCTRL_BYTEORDER = 22;
  962. SQLITE_TESTCTRL_ISINIT = 23;
  963. SQLITE_TESTCTRL_SORTER_MMAP = 24;
  964. SQLITE_TESTCTRL_IMPOSTER = 25;
  965. SQLITE_TESTCTRL_LAST = 25;
  966. SQLITE_STATUS_MEMORY_USED = 0;
  967. SQLITE_STATUS_PAGECACHE_USED = 1;
  968. SQLITE_STATUS_PAGECACHE_OVERFLOW = 2;
  969. SQLITE_STATUS_SCRATCH_USED = 3;
  970. SQLITE_STATUS_SCRATCH_OVERFLOW = 4;
  971. SQLITE_STATUS_MALLOC_SIZE = 5;
  972. SQLITE_STATUS_PARSER_STACK = 6;
  973. SQLITE_STATUS_PAGECACHE_SIZE = 7;
  974. SQLITE_STATUS_SCRATCH_SIZE = 8;
  975. SQLITE_STATUS_MALLOC_COUNT = 9;
  976. SQLITE_DBSTATUS_LOOKASIDE_USED = 0;
  977. SQLITE_DBSTATUS_CACHE_USED = 1;
  978. SQLITE_DBSTATUS_SCHEMA_USED = 2;
  979. SQLITE_DBSTATUS_STMT_USED = 3;
  980. SQLITE_DBSTATUS_LOOKASIDE_HIT = 4;
  981. SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE = 5;
  982. SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL = 6;
  983. SQLITE_DBSTATUS_CACHE_HIT = 7;
  984. SQLITE_DBSTATUS_CACHE_MISS = 8;
  985. SQLITE_DBSTATUS_CACHE_WRITE = 9;
  986. SQLITE_DBSTATUS_DEFERRED_FKS = 10;
  987. SQLITE_DBSTATUS_CACHE_USED_SHARED = 11;
  988. SQLITE_DBSTATUS_MAX = 11; (* Largest defined DBSTATUS *)
  989. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_status{$IFDEF D}: function{$ENDIF}(op: cint; pCurrent: pcint; pHighwater: pcint; resetFlag: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  990. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_status64{$IFDEF D}: function{$ENDIF}(op: cint; pCurrent: psqlite3_int64; pHighwater: psqlite3_int64; resetFlag: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  991. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_db_status{$IFDEF D}: function{$ENDIF}(db : psqlite3;op: cint; pCurrent:pcint; pHighwater: pcint; resetFlag: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  992. {$IFDEF S}function{$ELSE}var{$ENDIF}sqlite3_stmt_status{$IFDEF D}: function{$ENDIF}(stmt: psqlite3_stmt;op: cint; pcurrent:pcint; pHighwater: pcint; resetFlag: cint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  993. {Backup api}
  994. type
  995. psqlite3backup = Pointer;
  996. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_backup_init{$IFDEF D}: function{$ENDIF}(pDest: psqlite3; const zDestName: pansichar; pSource: psqlite3; const zSourceName: pansichar): psqlite3backup; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  997. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_backup_step{$IFDEF D}: function{$ENDIF}(p: psqlite3backup; nPage: Integer): Integer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  998. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_backup_finish{$IFDEF D}: function{$ENDIF}(p: psqlite3backup): Integer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  999. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_backup_remaining{$IFDEF D}: function{$ENDIF}(p: psqlite3backup): Integer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  1000. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_backup_pagecount{$IFDEF D}: function{$ENDIF}(p: psqlite3backup): Integer; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  1001. Type
  1002. xNotifycb = procedure (Argp: pointer; narg : cint);cdecl;
  1003. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_unlock_notify{$IFDEF D}: function{$ENDIF}(pBlocked:psqlite3;xNotify: xNotifycb;arg:pointer):cint;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  1004. {$IFDEF S}procedure{$ELSE}var{$ENDIF} sqlite3_log{$IFDEF D}: procedure{$ENDIF}(iErrCode:cint;fmt : pansichar); cdecl;varargs;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  1005. Type
  1006. wal_hook_cb = function (p : pointer; db :psqlite3; c : pansichar; d: cint): cint;cdecl;
  1007. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_wal_hook{$IFDEF D}: function{$ENDIF}(db:psqlite3;cb : wal_hook_cb; p: pointer): pointer;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  1008. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_wal_autocheckpoint{$IFDEF D}: function{$ENDIF}(db:psqlite3;n : cint): cint;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  1009. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_wal_checkpoint{$IFDEF D}: function{$ENDIF}(db:psqlite3;zDB: pansichar): cint;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  1010. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_wal_checkpoint_v2{$IFDEF D}: function{$ENDIF}(db:psqlite3;zDB: pansichar;emode:cint;nLog:pcint;nCkpt:pcint): cint;cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  1011. Const
  1012. SQLITE_CHECKPOINT_PASSIVE = 0; (* Do as much as possible w/o blocking *)
  1013. SQLITE_CHECKPOINT_FULL = 1; (* Wait for writers, then checkpoint *)
  1014. SQLITE_CHECKPOINT_RESTART = 2; (* Like FULL but wait for for readers *)
  1015. SQLITE_CHECKPOINT_TRUNCATE = 3; (* Like RESTART but also truncate WAL *)
  1016. {String handling api}
  1017. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_strglob {$IFDEF D}:function{$ENDIF}(zGlob, zStr: pansichar): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  1018. {$IFDEF S}function{$ELSE}var{$ENDIF} sqlite3_strlike {$IFDEF D}:function{$ENDIF}(zGlob, zStr: pansichar; cEsc: cuint): cint; cdecl;{$IFDEF S}external Sqlite3Lib;{$ENDIF}
  1019. {$IFDEF LOAD_DYNAMICALLY}
  1020. function InitializeSqliteANSI(const LibraryName: AnsiString = ''): Integer; //needed as TLibraryLoadFunction
  1021. function InitializeSqlite(const LibraryName: UnicodeString = ''): Integer;
  1022. function TryInitializeSqlite(const LibraryName: Unicodestring = ''): Integer;
  1023. procedure ReleaseSqlite; //needed as TLibraryUnLoadFunction
  1024. function InitialiseSQLite: Integer; deprecated;
  1025. function InitialiseSQLite(const LibraryName: UnicodeString): Integer; deprecated;
  1026. var
  1027. SQLiteLibraryHandle: TLibHandle;
  1028. SQLiteDefaultLibrary: String = Sqlite3Lib;
  1029. SQLiteLoadedLibrary: UnicodeString;
  1030. {$ENDIF LOAD_DYNAMICALLY}
  1031. implementation
  1032. function sqlite3_version(): pansichar;
  1033. begin
  1034. Result := sqlite3_libversion();
  1035. end;
  1036. {$IFDEF LOAD_DYNAMICALLY}
  1037. resourcestring
  1038. SErrLoadFailed = 'Can not load SQLite client library "%s". Check your installation.';
  1039. SErrAlreadyLoaded = 'SQLite interface already initialized from library %s.';
  1040. procedure LoadAddresses(LibHandle: TLibHandle);
  1041. begin
  1042. pointer(sqlite3_libversion) := GetProcedureAddress(LibHandle,'sqlite3_libversion');
  1043. pointer(sqlite3_libversion_number) := GetProcedureAddress(LibHandle,'sqlite3_libversion_number');
  1044. pointer(sqlite3_threadsafe) := GetProcedureAddress(LibHandle,'sqlite3_threadsafe');
  1045. pointer(sqlite3_close) := GetProcedureAddress(LibHandle,'sqlite3_close');
  1046. pointer(sqlite3_close_v2) := GetProcedureAddress(LibHandle,'sqlite3_close_v2');
  1047. pointer(sqlite3_exec) := GetProcedureAddress(LibHandle,'sqlite3_exec');
  1048. pointer(sqlite3_extended_result_codes) := GetProcedureAddress(LibHandle,'sqlite3_extended_result_codes');
  1049. pointer(sqlite3_last_insert_rowid) := GetProcedureAddress(LibHandle,'sqlite3_last_insert_rowid');
  1050. pointer(sqlite3_changes) := GetProcedureAddress(LibHandle,'sqlite3_changes');
  1051. pointer(sqlite3_total_changes) := GetProcedureAddress(LibHandle,'sqlite3_total_changes');
  1052. pointer(sqlite3_complete) := GetProcedureAddress(LibHandle,'sqlite3_complete');
  1053. pointer(sqlite3_complete16) := GetProcedureAddress(LibHandle,'sqlite3_complete16');
  1054. pointer(sqlite3_busy_handler) := GetProcedureAddress(LibHandle,'sqlite3_busy_handler');
  1055. pointer(sqlite3_busy_timeout) := GetProcedureAddress(LibHandle,'sqlite3_busy_timeout');
  1056. pointer(sqlite3_get_table) := GetProcedureAddress(LibHandle,'sqlite3_get_table');
  1057. pointer(sqlite3_malloc) := GetProcedureAddress(LibHandle,'sqlite3_malloc');
  1058. pointer(sqlite3_realloc) := GetProcedureAddress(LibHandle,'sqlite3_realloc');
  1059. pointer(sqlite3_memory_used) := GetProcedureAddress(LibHandle,'sqlite3_memory_used');
  1060. pointer(sqlite3_memory_highwater) := GetProcedureAddress(LibHandle,'sqlite3_memory_highwater');
  1061. pointer(sqlite3_set_authorizer) := GetProcedureAddress(LibHandle,'sqlite3_set_authorizer');
  1062. pointer(sqlite3_trace) := GetProcedureAddress(LibHandle,'sqlite3_trace');
  1063. pointer(sqlite3_profile) := GetProcedureAddress(LibHandle,'sqlite3_profile');
  1064. pointer(sqlite3_open) := GetProcedureAddress(LibHandle,'sqlite3_open');
  1065. pointer(sqlite3_open16) := GetProcedureAddress(LibHandle,'sqlite3_open16');
  1066. pointer(sqlite3_open_v2) := GetProcedureAddress(LibHandle,'sqlite3_open_v2');
  1067. pointer(sqlite3_errcode) := GetProcedureAddress(LibHandle,'sqlite3_errcode');
  1068. pointer(sqlite3_extended_errcode) := GetProcedureAddress(LibHandle,'sqlite3_extended_errcode');
  1069. pointer(sqlite3_errmsg) := GetProcedureAddress(LibHandle,'sqlite3_errmsg');
  1070. pointer(sqlite3_errmsg16) := GetProcedureAddress(LibHandle,'sqlite3_errmsg16');
  1071. pointer(sqlite3_errstr) := GetProcedureAddress(LibHandle,'sqlite3_errstr');
  1072. pointer(sqlite3_limit) := GetProcedureAddress(LibHandle,'sqlite3_limit');
  1073. pointer(sqlite3_prepare) := GetProcedureAddress(LibHandle,'sqlite3_prepare');
  1074. pointer(sqlite3_prepare_v2) := GetProcedureAddress(LibHandle,'sqlite3_prepare_v2');
  1075. pointer(sqlite3_prepare16) := GetProcedureAddress(LibHandle,'sqlite3_prepare16');
  1076. pointer(sqlite3_prepare16_v2) := GetProcedureAddress(LibHandle,'sqlite3_prepare16_v2');
  1077. pointer(sqlite3_sql) := GetProcedureAddress(LibHandle,'sqlite3_sql');
  1078. pointer(sqlite3_expanded_sql) := GetProcedureAddress(LibHandle,'sqlite3_expanded_sql');
  1079. pointer(sqlite3_bind_blob) := GetProcedureAddress(LibHandle,'sqlite3_bind_blob');
  1080. pointer(sqlite3_bind_blob64) := GetProcedureAddress(LibHandle,'sqlite3_bind_blob64');
  1081. pointer(sqlite3_bind_double) := GetProcedureAddress(LibHandle,'sqlite3_bind_double');
  1082. pointer(sqlite3_bind_int) := GetProcedureAddress(LibHandle,'sqlite3_bind_int');
  1083. pointer(sqlite3_bind_int64) := GetProcedureAddress(LibHandle,'sqlite3_bind_int64');
  1084. pointer(sqlite3_bind_null) := GetProcedureAddress(LibHandle,'sqlite3_bind_null');
  1085. pointer(sqlite3_bind_text) := GetProcedureAddress(LibHandle,'sqlite3_bind_text');
  1086. pointer(sqlite3_bind_text64) := GetProcedureAddress(LibHandle,'sqlite3_bind_text64');
  1087. pointer(sqlite3_bind_text16) := GetProcedureAddress(LibHandle,'sqlite3_bind_text16');
  1088. pointer(sqlite3_bind_value) := GetProcedureAddress(LibHandle,'sqlite3_bind_value');
  1089. pointer(sqlite3_bind_zeroblob) := GetProcedureAddress(LibHandle,'sqlite3_bind_zeroblob');
  1090. pointer(sqlite3_bind_zeroblob64) := GetProcedureAddress(LibHandle,'sqlite3_bind_zeroblob64');
  1091. pointer(sqlite3_bind_parameter_count) := GetProcedureAddress(LibHandle,'sqlite3_bind_parameter_count');
  1092. pointer(sqlite3_bind_parameter_name) := GetProcedureAddress(LibHandle,'sqlite3_bind_parameter_name');
  1093. pointer(sqlite3_bind_parameter_index) := GetProcedureAddress(LibHandle,'sqlite3_bind_parameter_index');
  1094. pointer(sqlite3_clear_bindings) := GetProcedureAddress(LibHandle,'sqlite3_clear_bindings');
  1095. pointer(sqlite3_column_count) := GetProcedureAddress(LibHandle,'sqlite3_column_count');
  1096. pointer(sqlite3_column_name) := GetProcedureAddress(LibHandle,'sqlite3_column_name');
  1097. pointer(sqlite3_column_name16) := GetProcedureAddress(LibHandle,'sqlite3_column_name16');
  1098. pointer(sqlite3_column_database_name) := GetProcedureAddress(LibHandle,'sqlite3_column_database_name');
  1099. pointer(sqlite3_column_database_name16) := GetProcedureAddress(LibHandle,'sqlite3_column_database_name16');
  1100. pointer(sqlite3_column_table_name) := GetProcedureAddress(LibHandle,'sqlite3_column_table_name');
  1101. pointer(sqlite3_column_table_name16) := GetProcedureAddress(LibHandle,'sqlite3_column_table_name16');
  1102. pointer(sqlite3_column_origin_name) := GetProcedureAddress(LibHandle,'sqlite3_column_origin_name');
  1103. pointer(sqlite3_column_origin_name16) := GetProcedureAddress(LibHandle,'sqlite3_column_origin_name16');
  1104. pointer(sqlite3_column_decltype) := GetProcedureAddress(LibHandle,'sqlite3_column_decltype');
  1105. pointer(sqlite3_column_decltype16) := GetProcedureAddress(LibHandle,'sqlite3_column_decltype16');
  1106. pointer(sqlite3_step) := GetProcedureAddress(LibHandle,'sqlite3_step');
  1107. pointer(sqlite3_data_count) := GetProcedureAddress(LibHandle,'sqlite3_data_count');
  1108. pointer(sqlite3_column_blob) := GetProcedureAddress(LibHandle,'sqlite3_column_blob');
  1109. pointer(sqlite3_column_bytes) := GetProcedureAddress(LibHandle,'sqlite3_column_bytes');
  1110. pointer(sqlite3_column_bytes16) := GetProcedureAddress(LibHandle,'sqlite3_column_bytes16');
  1111. pointer(sqlite3_column_double) := GetProcedureAddress(LibHandle,'sqlite3_column_double');
  1112. pointer(sqlite3_column_int) := GetProcedureAddress(LibHandle,'sqlite3_column_int');
  1113. pointer(sqlite3_column_int64) := GetProcedureAddress(LibHandle,'sqlite3_column_int64');
  1114. pointer(sqlite3_column_text) := GetProcedureAddress(LibHandle,'sqlite3_column_text');
  1115. pointer(sqlite3_column_text16) := GetProcedureAddress(LibHandle,'sqlite3_column_text16');
  1116. pointer(sqlite3_column_type) := GetProcedureAddress(LibHandle,'sqlite3_column_type');
  1117. pointer(sqlite3_column_value) := GetProcedureAddress(LibHandle,'sqlite3_column_value');
  1118. pointer(sqlite3_finalize) := GetProcedureAddress(LibHandle,'sqlite3_finalize');
  1119. pointer(sqlite3_reset) := GetProcedureAddress(LibHandle,'sqlite3_reset');
  1120. pointer(sqlite3_create_function) := GetProcedureAddress(LibHandle,'sqlite3_create_function');
  1121. pointer(sqlite3_create_function16) := GetProcedureAddress(LibHandle,'sqlite3_create_function16');
  1122. pointer(sqlite3_create_function_v2) := GetProcedureAddress(LibHandle,'sqlite3_create_function_v2');
  1123. pointer(sqlite3_value_blob) := GetProcedureAddress(LibHandle,'sqlite3_value_blob');
  1124. pointer(sqlite3_value_bytes) := GetProcedureAddress(LibHandle,'sqlite3_value_bytes');
  1125. pointer(sqlite3_value_bytes16) := GetProcedureAddress(LibHandle,'sqlite3_value_bytes16');
  1126. pointer(sqlite3_value_double) := GetProcedureAddress(LibHandle,'sqlite3_value_double');
  1127. pointer(sqlite3_value_int) := GetProcedureAddress(LibHandle,'sqlite3_value_int');
  1128. pointer(sqlite3_value_int64) := GetProcedureAddress(LibHandle,'sqlite3_value_int64');
  1129. pointer(sqlite3_value_text) := GetProcedureAddress(LibHandle,'sqlite3_value_text');
  1130. pointer(sqlite3_value_text16) := GetProcedureAddress(LibHandle,'sqlite3_value_text16');
  1131. pointer(sqlite3_value_text16le) := GetProcedureAddress(LibHandle,'sqlite3_value_text16le');
  1132. pointer(sqlite3_value_text16be) := GetProcedureAddress(LibHandle,'sqlite3_value_text16be');
  1133. pointer(sqlite3_value_type) := GetProcedureAddress(LibHandle,'sqlite3_value_type');
  1134. pointer(sqlite3_value_numeric_type) := GetProcedureAddress(LibHandle,'sqlite3_value_numeric_type');
  1135. pointer(sqlite3_value_subtype) := GetProcedureAddress(LibHandle,'sqlite3_value_subtype');
  1136. pointer(sqlite3_aggregate_context) := GetProcedureAddress(LibHandle,'sqlite3_aggregate_context');
  1137. pointer(sqlite3_user_data) := GetProcedureAddress(LibHandle,'sqlite3_user_data');
  1138. pointer(sqlite3_context_db_handle) := GetProcedureAddress(LibHandle,'sqlite3_context_db_handle');
  1139. pointer(sqlite3_get_auxdata) := GetProcedureAddress(LibHandle,'sqlite3_get_auxdata');
  1140. pointer(sqlite3_create_collation) := GetProcedureAddress(LibHandle,'sqlite3_create_collation');
  1141. pointer(sqlite3_create_collation_v2) := GetProcedureAddress(LibHandle,'sqlite3_create_collation_v2');
  1142. pointer(sqlite3_create_collation16) := GetProcedureAddress(LibHandle,'sqlite3_create_collation16');
  1143. pointer(sqlite3_collation_needed) := GetProcedureAddress(LibHandle,'sqlite3_collation_needed');
  1144. pointer(sqlite3_collation_needed16) := GetProcedureAddress(LibHandle,'sqlite3_collation_needed16');
  1145. pointer(sqlite3_key) := GetProcedureAddress(LibHandle,'sqlite3_key');
  1146. pointer(sqlite3_key_v2) := GetProcedureAddress(LibHandle,'sqlite3_key_v2');
  1147. pointer(sqlite3_rekey) := GetProcedureAddress(LibHandle,'sqlite3_rekey');
  1148. pointer(sqlite3_rekey_v2) := GetProcedureAddress(LibHandle,'sqlite3_rekey_v2');
  1149. pointer(sqlite3_sleep) := GetProcedureAddress(LibHandle,'sqlite3_sleep');
  1150. pointer(sqlite3_get_autocommit) := GetProcedureAddress(LibHandle,'sqlite3_get_autocommit');
  1151. pointer(sqlite3_db_handle) := GetProcedureAddress(LibHandle,'sqlite3_db_handle');
  1152. pointer(sqlite3_commit_hook) := GetProcedureAddress(LibHandle,'sqlite3_commit_hook');
  1153. pointer(sqlite3_rollback_hook) := GetProcedureAddress(LibHandle,'sqlite3_rollback_hook');
  1154. pointer(sqlite3_update_hook) := GetProcedureAddress(LibHandle,'sqlite3_update_hook');
  1155. pointer(sqlite3_enable_shared_cache) := GetProcedureAddress(LibHandle,'sqlite3_enable_shared_cache');
  1156. pointer(sqlite3_release_memory) := GetProcedureAddress(LibHandle,'sqlite3_release_memory');
  1157. pointer(sqlite3_table_column_metadata) := GetProcedureAddress(LibHandle,'sqlite3_table_column_metadata');
  1158. pointer(sqlite3_load_extension) := GetProcedureAddress(LibHandle,'sqlite3_load_extension');
  1159. pointer(sqlite3_enable_load_extension) := GetProcedureAddress(LibHandle,'sqlite3_enable_load_extension');
  1160. pointer(sqlite3_auto_extension) := GetProcedureAddress(LibHandle,'sqlite3_auto_extension');
  1161. pointer(sqlite3_create_module) := GetProcedureAddress(LibHandle,'sqlite3_create_module');
  1162. pointer(sqlite3_create_module_v2) := GetProcedureAddress(LibHandle,'sqlite3_create_module_v2');
  1163. pointer(sqlite3_declare_vtab) := GetProcedureAddress(LibHandle,'sqlite3_declare_vtab');
  1164. pointer(sqlite3_overload_function) := GetProcedureAddress(LibHandle,'sqlite3_overload_function');
  1165. pointer(sqlite3_blob_open) := GetProcedureAddress(LibHandle,'sqlite3_blob_open');
  1166. pointer(sqlite3_blob_reopen) := GetProcedureAddress(LibHandle,'sqlite3_blob_reopen');
  1167. pointer(sqlite3_blob_close) := GetProcedureAddress(LibHandle,'sqlite3_blob_close');
  1168. pointer(sqlite3_blob_bytes) := GetProcedureAddress(LibHandle,'sqlite3_blob_bytes');
  1169. pointer(sqlite3_blob_read) := GetProcedureAddress(LibHandle,'sqlite3_blob_read');
  1170. pointer(sqlite3_blob_write) := GetProcedureAddress(LibHandle,'sqlite3_blob_write');
  1171. pointer(sqlite3_vfs_find) := GetProcedureAddress(LibHandle,'sqlite3_vfs_find');
  1172. pointer(sqlite3_vfs_register) := GetProcedureAddress(LibHandle,'sqlite3_vfs_register');
  1173. pointer(sqlite3_vfs_unregister) := GetProcedureAddress(LibHandle,'sqlite3_vfs_unregister');
  1174. pointer(sqlite3_mutex_alloc) := GetProcedureAddress(LibHandle,'sqlite3_mutex_alloc');
  1175. pointer(sqlite3_mutex_try) := GetProcedureAddress(LibHandle,'sqlite3_mutex_try');
  1176. pointer(sqlite3_mutex_held) := GetProcedureAddress(LibHandle,'sqlite3_mutex_held');
  1177. pointer(sqlite3_mutex_notheld) := GetProcedureAddress(LibHandle,'sqlite3_mutex_notheld');
  1178. pointer(sqlite3_db_mutex) := GetProcedureAddress(LibHandle,'sqlite3_db_mutex');
  1179. pointer(sqlite3_file_control) := GetProcedureAddress(LibHandle,'sqlite3_file_control');
  1180. pointer(sqlite3_test_control) := GetProcedureAddress(LibHandle,'sqlite3_test_control');
  1181. pointer(sqlite3_status) := GetProcedureAddress(LibHandle,'sqlite3_status');
  1182. pointer(sqlite3_status64) := GetProcedureAddress(LibHandle,'sqlite3_status64');
  1183. pointer(sqlite3_db_status) := GetProcedureAddress(LibHandle,'sqlite3_db_status');
  1184. pointer(sqlite3_stmt_status) := GetProcedureAddress(LibHandle,'sqlite3_stmt_status');
  1185. pointer(sqlite3_interrupt) := GetProcedureAddress(LibHandle,'sqlite3_interrupt');
  1186. pointer(sqlite3_free_table) := GetProcedureAddress(LibHandle,'sqlite3_free_table');
  1187. pointer(sqlite3_free) := GetProcedureAddress(LibHandle,'sqlite3_free');
  1188. pointer(sqlite3_randomness) := GetProcedureAddress(LibHandle,'sqlite3_randomness');
  1189. pointer(sqlite3_progress_handler) := GetProcedureAddress(LibHandle,'sqlite3_progress_handler');
  1190. pointer(sqlite3_set_auxdata) := GetProcedureAddress(LibHandle,'sqlite3_set_auxdata');
  1191. pointer(sqlite3_result_blob) := GetProcedureAddress(LibHandle,'sqlite3_result_blob');
  1192. pointer(sqlite3_result_blob64) := GetProcedureAddress(LibHandle,'sqlite3_result_blob64');
  1193. pointer(sqlite3_result_double) := GetProcedureAddress(LibHandle,'sqlite3_result_double');
  1194. pointer(sqlite3_result_error) := GetProcedureAddress(LibHandle,'sqlite3_result_error');
  1195. pointer(sqlite3_result_error16) := GetProcedureAddress(LibHandle,'sqlite3_result_error16');
  1196. pointer(sqlite3_result_error_toobig) := GetProcedureAddress(LibHandle,'sqlite3_result_error_toobig');
  1197. pointer(sqlite3_result_error_nomem) := GetProcedureAddress(LibHandle,'sqlite3_result_error_nomem');
  1198. pointer(sqlite3_result_error_code) := GetProcedureAddress(LibHandle,'sqlite3_result_error_code');
  1199. pointer(sqlite3_result_int) := GetProcedureAddress(LibHandle,'sqlite3_result_int');
  1200. pointer(sqlite3_result_int64) := GetProcedureAddress(LibHandle,'sqlite3_result_int64');
  1201. pointer(sqlite3_result_null) := GetProcedureAddress(LibHandle,'sqlite3_result_null');
  1202. pointer(sqlite3_result_text) := GetProcedureAddress(LibHandle,'sqlite3_result_text');
  1203. pointer(sqlite3_result_text64) := GetProcedureAddress(LibHandle,'sqlite3_result_text64');
  1204. pointer(sqlite3_result_text16) := GetProcedureAddress(LibHandle,'sqlite3_result_text16');
  1205. pointer(sqlite3_result_text16le) := GetProcedureAddress(LibHandle,'sqlite3_result_text16le');
  1206. pointer(sqlite3_result_text16be) := GetProcedureAddress(LibHandle,'sqlite3_result_text16be');
  1207. pointer(sqlite3_result_value) := GetProcedureAddress(LibHandle,'sqlite3_result_value');
  1208. pointer(sqlite3_result_zeroblob) := GetProcedureAddress(LibHandle,'sqlite3_result_zeroblob');
  1209. pointer(sqlite3_result_zeroblob64) := GetProcedureAddress(LibHandle,'sqlite3_result_zeroblob64');
  1210. pointer(sqlite3_soft_heap_limit) := GetProcedureAddress(LibHandle,'sqlite3_soft_heap_limit');
  1211. pointer(sqlite3_soft_heap_limit64) := GetProcedureAddress(LibHandle,'sqlite3_soft_heap_limit64');
  1212. pointer(sqlite3_reset_auto_extension) := GetProcedureAddress(LibHandle,'sqlite3_reset_auto_extension');
  1213. pointer(sqlite3_mutex_free) := GetProcedureAddress(LibHandle,'sqlite3_mutex_free');
  1214. pointer(sqlite3_mutex_enter) := GetProcedureAddress(LibHandle,'sqlite3_mutex_enter');
  1215. pointer(sqlite3_mutex_leave) := GetProcedureAddress(LibHandle,'sqlite3_mutex_leave');
  1216. pointer(sqlite3_backup_init) := GetProcedureAddress(LibHandle,'sqlite3_backup_init');
  1217. pointer(sqlite3_backup_step) := GetProcedureAddress(LibHandle,'sqlite3_backup_step');
  1218. pointer(sqlite3_backup_finish) := GetProcedureAddress(LibHandle,'sqlite3_backup_finish');
  1219. pointer(sqlite3_backup_remaining) := GetProcedureAddress(LibHandle,'sqlite3_backup_remaining');
  1220. pointer(sqlite3_backup_pagecount) := GetProcedureAddress(LibHandle,'sqlite3_backup_pagecount');
  1221. pointer(sqlite3_unlock_notify) := GetProcedureAddress(LibHandle,'sqlite3_unlock_notify');
  1222. pointer(sqlite3_log) := GetProcedureAddress(LibHandle,'sqlite3_log');
  1223. pointer(sqlite3_wal_hook) := GetProcedureAddress(LibHandle,'sqlite3_wal_hook');
  1224. pointer(sqlite3_wal_autocheckpoint) := GetProcedureAddress(LibHandle,'sqlite3_wal_autocheckpoint');
  1225. pointer(sqlite3_wal_checkpoint) := GetProcedureAddress(LibHandle,'sqlite3_wal_checkpoint');
  1226. pointer(sqlite3_wal_checkpoint_v2) := GetProcedureAddress(LibHandle,'sqlite3_wal_checkpoint_v2');
  1227. pointer(sqlite3_strlike) := GetProcedureAddress(LibHandle,'sqlite3_strlike');
  1228. pointer(sqlite3_initialize) := GetProcedureAddress(LibHandle,'sqlite3_initialize');
  1229. pointer(sqlite3_shutdown) := GetProcedureAddress(LibHandle,'sqlite3_shutdown');
  1230. pointer(sqlite3_os_init) := GetProcedureAddress(LibHandle,'sqlite3_os_init');
  1231. pointer(sqlite3_os_end) := GetProcedureAddress(LibHandle,'sqlite3_os_end');
  1232. pointer(sqlite3_config) := GetProcedureAddress(LibHandle,'sqlite3_config');
  1233. pointer(sqlite3_db_config) := GetProcedureAddress(LibHandle,'sqlite3_db_config');
  1234. pointer(sqlite3_uri_parameter) := GetProcedureAddress(LibHandle,'sqlite3_uri_parameter');
  1235. {$IFDEF SQLITE_OBSOLETE}
  1236. pointer(sqlite3_aggregate_count) := GetProcedureAddress(LibHandle,'sqlite3_aggregate_count');
  1237. pointer(sqlite3_expired) := GetProcedureAddress(LibHandle,'sqlite3_expired');
  1238. pointer(sqlite3_transfer_bindings) := GetProcedureAddress(LibHandle,'sqlite3_transfer_bindings');
  1239. pointer(sqlite3_global_recover) := GetProcedureAddress(LibHandle,'sqlite3_global_recover');
  1240. pointer(sqlite3_memory_alarm) := GetProcedureAddress(LibHandle,'sqlite3_memory_alarm');
  1241. pointer(sqlite3_thread_cleanup) := GetProcedureAddress(LibHandle,'sqlite3_thread_cleanup');
  1242. {$ENDIF}
  1243. end;
  1244. var
  1245. RefCount: Integer;
  1246. function TryInitializeSqlite(const LibraryName: UnicodeString): Integer;
  1247. Var
  1248. N : UnicodeString;
  1249. begin
  1250. N:=LibraryName;
  1251. if (N='') then
  1252. N:=SQLiteDefaultLibrary;
  1253. result:=InterlockedIncrement(RefCount);
  1254. if result = 1 then
  1255. begin
  1256. SQLiteLibraryHandle := LoadLibrary(N);
  1257. if (SQLiteLibraryHandle = NilHandle) then
  1258. begin
  1259. RefCount := 0;
  1260. Exit(-1);
  1261. end;
  1262. SQLiteLoadedLibrary := N;
  1263. LoadAddresses(SQLiteLibraryHandle);
  1264. end;
  1265. end;
  1266. function InitialiseSQLite:integer;
  1267. begin
  1268. result:=InitializeSqlite(SQLiteDefaultLibrary);
  1269. end;
  1270. function InitializeSQLiteANSI(const LibraryName: AnsiString):integer;
  1271. begin
  1272. result:=InitializeSQLite(LibraryName);
  1273. end;
  1274. function InitializeSQLite(const LibraryName: UnicodeString) :integer;
  1275. begin
  1276. if (LibraryName<>'') and (SQLiteLoadedLibrary <> '') and (SQLiteLoadedLibrary <> LibraryName) then
  1277. raise EInoutError.CreateFmt(SErrAlreadyLoaded,[SQLiteLoadedLibrary]);
  1278. result:= TryInitializeSQLite(LibraryName);
  1279. if result=-1 then
  1280. if LibraryName='' then
  1281. raise EInOutError.CreateFmt(SErrLoadFailed,[SQLiteDefaultLibrary])
  1282. else
  1283. raise EInOutError.CreateFmt(SErrLoadFailed,[LibraryName]);
  1284. end;
  1285. function InitialiseSQLite(const LibraryName: UnicodeString):integer;
  1286. begin
  1287. result:=InitializeSqlite(LibraryName);
  1288. end;
  1289. procedure ReleaseSQLite;
  1290. begin
  1291. if InterlockedDecrement(RefCount) <= 0 then
  1292. begin
  1293. if SQLiteLibraryHandle <> NilHandle then
  1294. UnloadLibrary(SQLiteLibraryHandle);
  1295. SQLiteLibraryHandle := NilHandle;
  1296. SQLiteLoadedLibrary := '';
  1297. RefCount := 0;
  1298. end;
  1299. end;
  1300. {$ENDIF}