SQLite.def 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. DEFINITION MODULE FOR "C" SQLite;
  2. (* Core SQLite binding: connection setup, prepared statements,
  3. scalar/BLOB binding and results, column metadata, row changes,
  4. incremental BLOB I/O, error reporting, exec and connection hooks,
  5. and user-defined scalar functions.
  6. The full binding stays in m2SQLITE for later porting. *)
  7. FROM SYSTEM IMPORT ADDRESS;
  8. FROM CStr IMPORT CString;
  9. EXPORT UNQUALIFIED
  10. SQLiteOk, SQLiteError, SQLiteInternal, SQLitePerm, SQLiteAbort,
  11. SQLiteBusy, SQLiteLocked, SQLiteNoMem, SQLiteReadOnly,
  12. SQLiteInterrupt, SQLiteIoErr, SQLiteCorrupt, SQLiteNotFound,
  13. SQLiteFull, SQLiteCantOpen, SQLiteProtocol, SQLiteEmpty,
  14. SQLiteSchema, SQLiteTooBig, SQLiteConstraint, SQLiteMismatch,
  15. SQLiteMisuse, SQLiteNoLfs, SQLiteAuth, SQLiteFormat, SQLiteRange,
  16. SQLiteNotADb, SQLiteNotice, SQLiteWarning, SQLiteRow, SQLiteDone,
  17. SQLiteInteger, SQLiteFloat, SQLiteText, SQLiteBlob, SQLiteNull,
  18. SQLiteConstraintPrimaryKey, SQLiteConstraintUnique,
  19. SQLiteOpenReadOnly, SQLiteOpenReadWrite, SQLiteOpenCreate,
  20. SQLiteOpenURI, SQLiteOpenMemory, SQLiteOpenNoMutex,
  21. SQLiteOpenFullMutex, SQLiteOpenSharedCache, SQLiteOpenPrivateCache,
  22. SQLiteOpenWal,
  23. SQLiteUtf8, SQLiteUtf16Le, SQLiteUtf16Be, SQLiteUtf16, SQLiteAny,
  24. SQLiteDeterministic,
  25. SQLiteOpInsert, SQLiteOpUpdate, SQLiteOpDelete,
  26. SQLiteAuthOk, SQLiteAuthDeny, SQLiteAuthIgnore,
  27. SQLiteAuthDelete, SQLiteAuthSelect,
  28. SQLiteTraceStmt, SQLiteTraceProfile, SQLiteTraceRow, SQLiteTraceClose,
  29. sqlite3_open,
  30. sqlite3_open_v2,
  31. sqlite3_exec,
  32. sqlite3_close,
  33. sqlite3_close_v2,
  34. sqlite3_prepare_v2,
  35. sqlite3_bind_int,
  36. sqlite3_bind_int64,
  37. sqlite3_bind_double,
  38. sqlite3_bind_null,
  39. sqlite3_bind_blob,
  40. sqlite3_bind_zeroblob,
  41. sqlite3_bind_text,
  42. sqlite3_bind_parameter_count,
  43. sqlite3_bind_parameter_name,
  44. sqlite3_bind_parameter_index,
  45. sqlite3_step,
  46. sqlite3_reset,
  47. sqlite3_clear_bindings,
  48. sqlite3_column_count,
  49. sqlite3_data_count,
  50. sqlite3_column_type,
  51. sqlite3_column_bytes,
  52. sqlite3_column_int,
  53. sqlite3_column_int64,
  54. sqlite3_column_double,
  55. sqlite3_column_blob,
  56. sqlite3_column_text,
  57. sqlite3_column_name,
  58. sqlite3_column_decltype,
  59. sqlite3_finalize,
  60. sqlite3_changes,
  61. sqlite3_total_changes,
  62. sqlite3_last_insert_rowid,
  63. sqlite3_blob_open,
  64. sqlite3_blob_close,
  65. sqlite3_blob_read,
  66. sqlite3_blob_write,
  67. sqlite3_blob_bytes,
  68. sqlite3_blob_reopen,
  69. sqlite3_create_function_v2,
  70. sqlite3_value_type,
  71. sqlite3_value_int,
  72. sqlite3_value_int64,
  73. sqlite3_value_double,
  74. sqlite3_value_text,
  75. sqlite3_value_blob,
  76. sqlite3_value_bytes,
  77. sqlite3_result_null,
  78. sqlite3_result_int,
  79. sqlite3_result_int64,
  80. sqlite3_result_double,
  81. sqlite3_result_text,
  82. sqlite3_result_blob,
  83. sqlite3_result_error,
  84. sqlite3_result_error_code,
  85. sqlite3_user_data,
  86. sqlite3_context_db_handle,
  87. sqlite3_busy_timeout,
  88. sqlite3_busy_handler,
  89. sqlite3_interrupt,
  90. sqlite3_progress_handler,
  91. sqlite3_trace_v2,
  92. sqlite3_update_hook,
  93. sqlite3_commit_hook,
  94. sqlite3_rollback_hook,
  95. sqlite3_set_authorizer,
  96. sqlite3_db_handle,
  97. sqlite3_errmsg,
  98. sqlite3_errstr,
  99. sqlite3_errcode,
  100. sqlite3_extended_errcode,
  101. sqlite3_extended_result_codes,
  102. sqlite3_free,
  103. SQLiteArrayAt,
  104. SQLiteTransient;
  105. CONST
  106. SQLiteOk = 0;
  107. SQLiteError = 1;
  108. SQLiteInternal = 2;
  109. SQLitePerm = 3;
  110. SQLiteAbort = 4;
  111. SQLiteBusy = 5;
  112. SQLiteLocked = 6;
  113. SQLiteNoMem = 7;
  114. SQLiteReadOnly = 8;
  115. SQLiteInterrupt = 9;
  116. SQLiteIoErr = 10;
  117. SQLiteCorrupt = 11;
  118. SQLiteNotFound = 12;
  119. SQLiteFull = 13;
  120. SQLiteCantOpen = 14;
  121. SQLiteProtocol = 15;
  122. SQLiteEmpty = 16;
  123. SQLiteSchema = 17;
  124. SQLiteTooBig = 18;
  125. SQLiteConstraint = 19;
  126. SQLiteMismatch = 20;
  127. SQLiteMisuse = 21;
  128. SQLiteNoLfs = 22;
  129. SQLiteAuth = 23;
  130. SQLiteFormat = 24;
  131. SQLiteRange = 25;
  132. SQLiteNotADb = 26;
  133. SQLiteNotice = 27;
  134. SQLiteWarning = 28;
  135. SQLiteRow = 100;
  136. SQLiteDone = 101;
  137. SQLiteInteger = 1;
  138. SQLiteFloat = 2;
  139. SQLiteText = 3;
  140. SQLiteBlob = 4;
  141. SQLiteNull = 5;
  142. SQLiteConstraintPrimaryKey = 1555;
  143. SQLiteConstraintUnique = 2067;
  144. SQLiteOpenReadOnly = 1;
  145. SQLiteOpenReadWrite = 2;
  146. SQLiteOpenCreate = 4;
  147. SQLiteOpenURI = 64;
  148. SQLiteOpenMemory = 128;
  149. SQLiteOpenNoMutex = 32768;
  150. SQLiteOpenFullMutex = 65536;
  151. SQLiteOpenSharedCache = 131072;
  152. SQLiteOpenPrivateCache = 262144;
  153. SQLiteOpenWal = 524288;
  154. SQLiteUtf8 = 1;
  155. SQLiteUtf16Le = 2;
  156. SQLiteUtf16Be = 3;
  157. SQLiteUtf16 = 4;
  158. SQLiteAny = 5;
  159. SQLiteDeterministic = 2048;
  160. SQLiteOpDelete = 9;
  161. SQLiteOpInsert = 18;
  162. SQLiteOpUpdate = 23;
  163. SQLiteAuthOk = 0;
  164. SQLiteAuthDeny = 1;
  165. SQLiteAuthIgnore = 2;
  166. SQLiteAuthDelete = 9;
  167. SQLiteAuthSelect = 21;
  168. SQLiteTraceStmt = 1;
  169. SQLiteTraceProfile = 2;
  170. SQLiteTraceRow = 4;
  171. SQLiteTraceClose = 8;
  172. PROCEDURE sqlite3_open (filename : ARRAY OF CHAR;
  173. VAR db : ADDRESS) : INTEGER;
  174. PROCEDURE sqlite3_open_v2 (filename : ARRAY OF CHAR;
  175. VAR db : ADDRESS;
  176. flags : INTEGER;
  177. vfs : CString) : INTEGER;
  178. PROCEDURE sqlite3_exec (db : ADDRESS;
  179. sql : ARRAY OF CHAR;
  180. callback, arg : ADDRESS;
  181. VAR errmsg : ADDRESS) : INTEGER;
  182. PROCEDURE sqlite3_close (db : ADDRESS) : INTEGER;
  183. PROCEDURE sqlite3_close_v2 (db : ADDRESS) : INTEGER;
  184. PROCEDURE sqlite3_prepare_v2 (db : ADDRESS;
  185. sql : ARRAY OF CHAR;
  186. nBytes : INTEGER;
  187. VAR stmt : ADDRESS;
  188. tail : ADDRESS) : INTEGER;
  189. PROCEDURE sqlite3_bind_int (stmt : ADDRESS;
  190. idx : INTEGER;
  191. value : INTEGER) : INTEGER;
  192. PROCEDURE sqlite3_bind_int64 (stmt : ADDRESS;
  193. idx : INTEGER;
  194. value : LONGINT) : INTEGER;
  195. PROCEDURE sqlite3_bind_double (stmt : ADDRESS;
  196. idx : INTEGER;
  197. value : REAL) : INTEGER;
  198. PROCEDURE sqlite3_bind_null (stmt : ADDRESS;
  199. idx : INTEGER) : INTEGER;
  200. PROCEDURE sqlite3_bind_blob (stmt : ADDRESS;
  201. idx : INTEGER;
  202. data : ADDRESS;
  203. nBytes : INTEGER;
  204. destructor : ADDRESS) : INTEGER;
  205. PROCEDURE sqlite3_bind_zeroblob (stmt : ADDRESS;
  206. idx : INTEGER;
  207. nBytes : INTEGER) : INTEGER;
  208. PROCEDURE sqlite3_bind_text (stmt : ADDRESS;
  209. idx : INTEGER;
  210. value : ARRAY OF CHAR;
  211. nBytes : INTEGER;
  212. destructor : ADDRESS) : INTEGER;
  213. PROCEDURE sqlite3_bind_parameter_count (stmt : ADDRESS) : INTEGER;
  214. PROCEDURE sqlite3_bind_parameter_name (stmt : ADDRESS;
  215. idx : INTEGER) : CString;
  216. PROCEDURE sqlite3_bind_parameter_index (stmt : ADDRESS;
  217. name : ARRAY OF CHAR) : INTEGER;
  218. PROCEDURE sqlite3_step (stmt : ADDRESS) : INTEGER;
  219. PROCEDURE sqlite3_reset (stmt : ADDRESS) : INTEGER;
  220. PROCEDURE sqlite3_clear_bindings (stmt : ADDRESS) : INTEGER;
  221. PROCEDURE sqlite3_column_count (stmt : ADDRESS) : INTEGER;
  222. PROCEDURE sqlite3_data_count (stmt : ADDRESS) : INTEGER;
  223. PROCEDURE sqlite3_column_type (stmt : ADDRESS;
  224. col : INTEGER) : INTEGER;
  225. PROCEDURE sqlite3_column_bytes (stmt : ADDRESS;
  226. col : INTEGER) : INTEGER;
  227. PROCEDURE sqlite3_column_int (stmt : ADDRESS;
  228. col : INTEGER) : INTEGER;
  229. PROCEDURE sqlite3_column_int64 (stmt : ADDRESS;
  230. col : INTEGER) : LONGINT;
  231. PROCEDURE sqlite3_column_double (stmt : ADDRESS;
  232. col : INTEGER) : REAL;
  233. PROCEDURE sqlite3_column_blob (stmt : ADDRESS;
  234. col : INTEGER) : ADDRESS;
  235. PROCEDURE sqlite3_column_text (stmt : ADDRESS;
  236. col : INTEGER) : CString;
  237. PROCEDURE sqlite3_column_name (stmt : ADDRESS;
  238. col : INTEGER) : CString;
  239. PROCEDURE sqlite3_column_decltype (stmt : ADDRESS;
  240. col : INTEGER) : CString;
  241. PROCEDURE sqlite3_finalize (stmt : ADDRESS) : INTEGER;
  242. PROCEDURE sqlite3_changes (db : ADDRESS) : INTEGER;
  243. PROCEDURE sqlite3_total_changes (db : ADDRESS) : INTEGER;
  244. PROCEDURE sqlite3_last_insert_rowid (db : ADDRESS) : LONGINT;
  245. PROCEDURE sqlite3_blob_open (db : ADDRESS;
  246. dbName, tableName, columnName : ARRAY OF CHAR;
  247. rowid : LONGINT;
  248. flags : INTEGER;
  249. VAR blob : ADDRESS) : INTEGER;
  250. PROCEDURE sqlite3_blob_close (blob : ADDRESS) : INTEGER;
  251. PROCEDURE sqlite3_blob_read (blob : ADDRESS;
  252. data : ADDRESS;
  253. nBytes : INTEGER;
  254. offset : INTEGER) : INTEGER;
  255. PROCEDURE sqlite3_blob_write (blob : ADDRESS;
  256. data : ADDRESS;
  257. nBytes : INTEGER;
  258. offset : INTEGER) : INTEGER;
  259. PROCEDURE sqlite3_blob_bytes (blob : ADDRESS) : INTEGER;
  260. PROCEDURE sqlite3_blob_reopen (blob : ADDRESS;
  261. rowid : LONGINT) : INTEGER;
  262. (* User-defined scalar functions. xFunc receives
  263. (sqlite3_context*, int argc, sqlite3_value** argv); use
  264. SQLiteArrayAt(argv, i) to reach each value. *)
  265. PROCEDURE sqlite3_create_function_v2 (db : ADDRESS;
  266. name : ARRAY OF CHAR;
  267. nArgs : INTEGER;
  268. textRep : INTEGER;
  269. userData : ADDRESS;
  270. xFunc, xStep, xFinal : ADDRESS;
  271. xDestroy : ADDRESS) : INTEGER;
  272. PROCEDURE sqlite3_value_type (value : ADDRESS) : INTEGER;
  273. PROCEDURE sqlite3_value_int (value : ADDRESS) : INTEGER;
  274. PROCEDURE sqlite3_value_int64 (value : ADDRESS) : LONGINT;
  275. PROCEDURE sqlite3_value_double (value : ADDRESS) : REAL;
  276. PROCEDURE sqlite3_value_text (value : ADDRESS) : CString;
  277. PROCEDURE sqlite3_value_blob (value : ADDRESS) : ADDRESS;
  278. PROCEDURE sqlite3_value_bytes (value : ADDRESS) : INTEGER;
  279. PROCEDURE sqlite3_result_null (ctx : ADDRESS);
  280. PROCEDURE sqlite3_result_int (ctx : ADDRESS; value : INTEGER);
  281. PROCEDURE sqlite3_result_int64 (ctx : ADDRESS; value : LONGINT);
  282. PROCEDURE sqlite3_result_double (ctx : ADDRESS; value : REAL);
  283. PROCEDURE sqlite3_result_text (ctx : ADDRESS;
  284. value : ARRAY OF CHAR;
  285. nBytes : INTEGER;
  286. destructor : ADDRESS);
  287. PROCEDURE sqlite3_result_blob (ctx : ADDRESS;
  288. data : ADDRESS;
  289. nBytes : INTEGER;
  290. destructor : ADDRESS);
  291. PROCEDURE sqlite3_result_error (ctx : ADDRESS;
  292. msg : ARRAY OF CHAR;
  293. nBytes : INTEGER);
  294. PROCEDURE sqlite3_result_error_code (ctx : ADDRESS; code : INTEGER);
  295. PROCEDURE sqlite3_user_data (ctx : ADDRESS) : ADDRESS;
  296. PROCEDURE sqlite3_context_db_handle (ctx : ADDRESS) : ADDRESS;
  297. (* Connection hooks. Hooks must be top-level V3 procedures. *)
  298. PROCEDURE sqlite3_busy_timeout (db : ADDRESS; milliseconds : INTEGER) : INTEGER;
  299. PROCEDURE sqlite3_busy_handler (db : ADDRESS;
  300. callback, arg : ADDRESS) : INTEGER;
  301. PROCEDURE sqlite3_interrupt (db : ADDRESS);
  302. PROCEDURE sqlite3_progress_handler (db : ADDRESS;
  303. nOps : INTEGER;
  304. callback, arg : ADDRESS);
  305. PROCEDURE sqlite3_trace_v2 (db : ADDRESS;
  306. mask : CARDINAL;
  307. callback, arg : ADDRESS) : INTEGER;
  308. PROCEDURE sqlite3_update_hook (db : ADDRESS;
  309. callback, arg : ADDRESS) : ADDRESS;
  310. PROCEDURE sqlite3_commit_hook (db : ADDRESS;
  311. callback, arg : ADDRESS) : ADDRESS;
  312. PROCEDURE sqlite3_rollback_hook (db : ADDRESS;
  313. callback, arg : ADDRESS);
  314. PROCEDURE sqlite3_set_authorizer (db : ADDRESS;
  315. callback, arg : ADDRESS) : INTEGER;
  316. PROCEDURE sqlite3_db_handle (stmt : ADDRESS) : ADDRESS;
  317. PROCEDURE sqlite3_errmsg (db : ADDRESS) : CString;
  318. PROCEDURE sqlite3_errstr (code : INTEGER) : CString;
  319. PROCEDURE sqlite3_errcode (db : ADDRESS) : INTEGER;
  320. PROCEDURE sqlite3_extended_errcode (db : ADDRESS) : INTEGER;
  321. PROCEDURE sqlite3_extended_result_codes (db : ADDRESS;
  322. onoff : INTEGER) : INTEGER;
  323. PROCEDURE sqlite3_free (p : ADDRESS);
  324. PROCEDURE SQLiteArrayAt (array : ADDRESS; idx : INTEGER) : ADDRESS;
  325. EXTERNAL "m2_sqlite_array_at";
  326. (* Index a C array of pointers, such as char **argv or sqlite3_value **. *)
  327. PROCEDURE SQLiteTransient () : ADDRESS;
  328. EXTERNAL "m2_sqlite_transient";
  329. (* The SQLITE_TRANSIENT destructor sentinel: SQLite copies bound data. *)
  330. END SQLite.