this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 353 lines 14 kB view raw
1package sqlite3 2 3import "core:c" 4 5Connection :: rawptr 6Backup :: rawptr 7Statement :: rawptr 8Blob :: rawptr 9 10@(private) 11USE_DYNAMIC_LIB :: #config(SQLITE3_DYNAMIC_LIB, false) 12@(private) 13USE_SYSTEM_LIB :: #config(SQLITE3_SYSTEM_LIB, false) 14@(private) 15USE_SQLCIPHER :: #config(SQLITE3_USE_SQLCIPHER, false) 16 17when ODIN_OS == .Windows { 18 when USE_SYSTEM_LIB { 19 when USE_DYNAMIC_LIB { 20 when USE_SQLCIPHER { 21 foreign import sqlite "system:libsqlcipher.dll" 22 } else { 23 foreign import sqlite "system:libsqlite3.dll" 24 } 25 } else { 26 when USE_SQLCIPHER { 27 foreign import sqlite "system:libsqlcipher.lib" 28 } else { 29 foreign import sqlite "system:libsqlite3.lib" 30 } 31 } 32 } else { 33 when USE_DYNAMIC_LIB { 34 when USE_SQLCIPHER { 35 foreign import sqlite "libsqlcipher.dll" 36 } else { 37 foreign import sqlite "libsqlite3.dll" 38 } 39 } else { 40 when USE_SQLCIPHER { 41 foreign import sqlite "libsqlcipher.lib" 42 } else { 43 foreign import sqlite "libsqlite3.lib" 44 } 45 } 46 } 47} else when ODIN_OS == .Darwin { 48 when USE_SYSTEM_LIB { 49 when USE_DYNAMIC_LIB { 50 when USE_SQLCIPHER { 51 foreign import sqlite "system:libsqlcipher.dylib" 52 } else { 53 foreign import sqlite "system:libsqlite3.dylib" 54 } 55 } else { 56 when USE_SQLCIPHER { 57 foreign import sqlite "system:libsqlcipher.a" 58 } else { 59 foreign import sqlite "system:libsqlite3.a" 60 } 61 } 62 } else { 63 when USE_DYNAMIC_LIB { 64 when USE_SQLCIPHER { 65 foreign import sqlite "libsqlcipher.dylib" 66 } else { 67 foreign import sqlite "libsqlite3.dylib" 68 } 69 } else { 70 when USE_SQLCIPHER { 71 foreign import sqlite "libsqlcipher.a" 72 } else { 73 foreign import sqlite "libsqlite3.a" 74 } 75 } 76 } 77} else when ODIN_OS == .Linux { 78 when USE_SYSTEM_LIB { 79 when USE_DYNAMIC_LIB { 80 when USE_SQLCIPHER { 81 foreign import sqlite "system:libsqlcipher.so" 82 } else { 83 foreign import sqlite "system:libsqlite3.so" 84 } 85 } else { 86 when USE_SQLCIPHER { 87 foreign import sqlite "system:libsqlcipher.a" 88 } else { 89 foreign import sqlite "system:libsqlite3.a" 90 } 91 } 92 } else { 93 when USE_DYNAMIC_LIB { 94 when USE_SQLCIPHER { 95 foreign import sqlite "libsqlcipher.so" 96 } else { 97 foreign import sqlite "libsqlite3.so" 98 } 99 } else { 100 when USE_SQLCIPHER { 101 foreign import sqlite "libsqlcipher.a" 102 } else { 103 foreign import sqlite "libsqlite3.a" 104 } 105 } 106 } 107} 108 109Config_Option :: enum (c.int) { 110 Single_Thread = 1, 111 Multi_Thread = 2, 112 Serialized = 3, 113 Malloc = 4, 114 Get_Malloc = 5, 115 Scratch = 6, 116 Page_Cache = 7, 117 Heap = 8, 118 Mem_Status = 9, 119 Mutex = 10, 120 Get_Mutex = 11, 121 Lookaside = 13, 122 PCache = 14, 123 Get_PCache = 15, 124 Log = 16, 125 Uri = 17, 126 PCache2 = 18, 127 Get_PCache2 = 19, 128 Covering_Index_Scan = 20, 129 SqlLog = 21, 130 Mmap_Size = 22, 131 Win32_Heapsize = 23, 132 PCache_Hdrsz = 24, 133 Pmasz = 25, 134 StmtJrnl_Spill = 26, 135 Small_Malloc = 27, 136 SorterRef_Size = 28, 137 Memdb_Maxsize = 29, 138 Rowid_In_View = 30, 139} 140 141Destructor_Behavior :: enum (int) { 142 Static = 0, 143 Transient = -1, 144} 145 146Destructor :: struct #raw_union { 147 callback: proc(it: rawptr), 148 behaviour: Destructor_Behavior, 149} 150 151Result_Code :: enum (c.int) { 152 Ok = 0, 153 Error = 1, 154 Internal = 2, 155 Perm = 3, 156 Abort = 4, 157 Busy = 5, 158 Locked = 6, 159 NoMem = 7, 160 ReadOnly = 8, 161 Interrupt = 9, 162 IoErr = 10, 163 Corrupt = 11, 164 NotFound = 12, 165 Full = 13, 166 CantOpen = 14, 167 Protocol = 15, 168 Empty = 16, 169 Schema = 17, 170 TooBig = 18, 171 Constraint = 19, 172 Mismatch = 20, 173 Misuse = 21, 174 NoLfs = 22, 175 Auth = 23, 176 Format = 24, 177 Range = 25, 178 NotA_Db = 26, 179 Notice = 27, 180 Warning = 28, 181 Row = 100, 182 Done = 101, 183 Ok_Load_Permanently = 256, 184 Error_Missing_CollSeq = 257, 185 Busy_Recovery = 261, 186 Locked_SharedCache = 262, 187 ReadOnly_Recovery = 264, 188 IoErr_Read = 266, 189 Corrupt_Vtab = 267, 190 CantOpen_NoTempDir = 270, 191 Constraint_Check = 275, 192 Auth_User = 279, 193 Notice_Recover_Wal = 283, 194 Warning_AutoIndex = 284, 195 Error_Retry = 513, 196 Abort_Rollback = 516, 197 Busy_Snapshot = 517, 198 Locked_Vtab = 518, 199 ReadOnly_CantLock = 520, 200 IoErr_Short_Read = 522, 201 Corrupt_Sequence = 523, 202 CantOpen_IsDir = 526, 203 Constraint_CommitHook = 531, 204 Notice_Recover_Rollback = 539, 205 Error_Snapshot = 769, 206 Busy_Timeout = 773, 207 ReadOnly_Rollback = 776, 208 IoErr_Write = 778, 209 Corrupt_Index = 779, 210 CantOpen_FullPath = 782, 211 Constraint_ForeignKey = 787, 212 ReadOnly_DbMoved = 1032, 213 IoErr_FSync = 1034, 214 CantOpen_ConvPath = 1038, 215 Constraint_Function = 1043, 216 ReadOnly_CantInit = 1288, 217 IoErr_Dir_FSync = 1290, 218 CantOpen_DirtyWal = 1294, 219 Constraint_NotNull = 1299, 220 ReadOnly_Directory = 1544, 221 IoErr_Truncate = 1546, 222 CantOpen_Symlink = 1550, 223 Constraint_PrimaryKey = 1555, 224 IoErr_FStat = 1802, 225 Constraint_Trigger = 1811, 226 IoErr_Unlock = 2058, 227 Constraint_Unique = 2067, 228 IoErr_RdLock = 2314, 229 Constraint_Vtab = 2323, 230 IoErr_Delete = 2570, 231 Constraint_RowId = 2579, 232 IoErr_Blocked = 2826, 233 Constraint_Pinned = 2835, 234 IoErr_NoMem = 3082, 235 Constraint_DataType = 3091, 236 IoErr_Access = 3338, 237 IoErr_CheckReservedLock = 3594, 238 IoErr_Lock = 3850, 239 IoErr_Close = 4106, 240 IoErr_Dir_Close = 4362, 241 IoErr_ShmOpen = 4618, 242 IoErr_ShmSize = 4874, 243 IoErr_ShmLock = 5130, 244 IoErr_ShmMap = 5386, 245 IoErr_Seek = 5642, 246 IoErr_Delete_NoEnt = 5898, 247 IoErr_MMap = 6154, 248 IoErr_GetTempPath = 6410, 249 IoErr_ConvPath = 6666, 250 IoErr_VNode = 6922, 251 IoErr_Auth = 7178, 252 IoErr_Begin_Atomic = 7434, 253 IoErr_Commit_Atomic = 7690, 254 IoErr_Rollback_Atomic = 7946, 255 IoErr_Data = 8202, 256 IoErr_CorruptFS = 8458, 257} 258 259@(link_prefix = "sqlite3_") 260foreign sqlite { 261 free :: proc "c" (ptr: rawptr) --- 262 open :: proc "c" (filename: cstring, db: ^^Connection) -> Result_Code --- 263 open16 :: proc "c" (filename: cstring, db: ^^Connection) -> Result_Code --- 264 open_v2 :: proc "c" (filename: cstring, db: ^^Connection, flags: c.int, z_vfs: cstring) -> Result_Code --- 265 close :: proc "c" (db: ^Connection) -> Result_Code --- 266 close_v2 :: proc "c" (db: ^Connection) -> Result_Code --- 267 prepare :: proc "c" (db: ^Connection, sql: cstring, n_bytes: c.int, statement: ^^Statement, tail: ^^cstring) -> Result_Code --- 268 prepare_v2 :: proc "c" (db: ^Connection, sql: cstring, n_bytes: c.int, statement: ^^Statement, tail: ^^cstring) -> Result_Code --- 269 step :: proc "c" (statement: ^Statement) -> Result_Code --- 270 finalize :: proc "c" (statememt: ^Statement) -> Result_Code --- 271 exec :: proc "c" (db: ^Connection, sql: cstring, cb: proc "c" (ctx: rawptr, argc: c.int, argv: [^]cstring, col_names: [^]cstring) -> c.int, ctx: rawptr, err: ^cstring) -> Result_Code --- 272 changes :: proc "c" (db: ^Connection) -> c.int --- 273 changes64 :: proc "c" (db: ^Connection) -> c.int64_t --- 274 errmsg :: proc "c" (db: ^Connection) -> cstring --- 275 extended_result_codes :: proc "c" (db: ^Connection, onoff: c.int) -> c.int --- 276 extended_errcode :: proc "c" (db: ^Connection) -> Result_Code --- 277 auto_extension :: proc "c" (x_entry_point: proc "c" ()) -> Result_Code --- 278 cancel_auto_extension :: proc "c" (x_entry_point: proc "c" ()) -> Result_Code --- 279 backup :: proc "c" (dest: ^Connection, dest_name: cstring, source: ^Connection, source_name: cstring) -> ^Backup --- 280 backup_step :: proc "c" (backup: ^Backup, n_page: c.int) -> c.int --- 281 backup_finish :: proc "c" (backup: ^Backup) -> Result_Code --- 282 backup_remaining :: proc "c" (backup: ^Backup) -> c.int --- 283 backup_pagecount :: proc "c" (backup: ^Backup) -> c.int --- 284 bind_blob :: proc "c" (statement: ^Statement, param_idx: c.int, param_value: [^]byte, param_len: c.int, free: Destructor) -> Result_Code --- 285 bind_blob64 :: proc "c" (statement: ^Statement, param_idx: c.int, param_value: [^]byte, param_len: c.int64_t, free: Destructor) -> Result_Code --- 286 bind_double :: proc "c" (statement: ^Statement, param_idx: c.int, param_value: c.double) -> Result_Code --- 287 bind_int :: proc "c" (statement: ^Statement, param_idx: c.int, param_value: c.int) -> Result_Code --- 288 bind_int64 :: proc "c" (statement: ^Statement, param_idx: c.int, param_value: c.int64_t) -> Result_Code --- 289 bind_null :: proc "c" (statement: ^Statement, param_idx: c.int) -> Result_Code --- 290 bind_text :: proc "c" (statement: ^Statement, param_idx: c.int, param_value: cstring, param_len: c.int, free: Destructor) -> Result_Code --- 291 bind_text16 :: proc "c" (statement: ^Statement, param_idx: c.int, param_value: cstring, param_len: c.int, free: Destructor) -> Result_Code --- 292 bind_text64 :: proc "c" (statement: ^Statement, param_idx: c.int, param_value: cstring, param_len: c.int64_t, free: Destructor, encoding: c.uchar) -> Result_Code --- 293 bind_zeroblob :: proc "c" (statement: ^Statement, param_idx: c.int, len: c.int) -> Result_Code --- 294 bind_zeroblob64 :: proc "c" (statement: ^Statement, param_idx: c.int, len: c.int64_t) -> Result_Code --- 295 bind_parameter_count :: proc "c" (statement: ^Statement) -> c.int --- 296 bind_parameter_index :: proc "c" (statement: ^Statement, name: cstring) -> c.int --- 297 bind_parameter_name :: proc "c" (statement: ^Statement, param_idx: c.int) -> cstring --- 298 blob_bytes :: proc "c" (blob: ^Blob) -> c.int --- 299 blob_close :: proc "c" (blob: ^Blob) -> Result_Code --- 300 blob_open :: proc "c" (db: ^Connection, database_name: cstring, table: cstring, column: cstring, row_idx: c.int64_t, flags: c.int, blob: ^^Blob) -> Result_Code --- 301 blob_read :: proc "c" (blob: ^Blob, dest: rawptr, n_bytes: c.int, n_bytes_offset: c.int) -> Result_Code --- 302 blob_write :: proc "c" (blob: ^Blob, source: rawptr, n_bytes: c.int, n_bytes_offset: c.int) -> Result_Code --- 303 blob_reopen :: proc "c" (blob: ^Blob, row_id: c.int64_t) -> Result_Code --- 304 busy_handler :: proc "c" (db: ^Connection, handler: proc "c" (ctx: rawptr, attempt: c.int) -> Result_Code, ctx: rawptr) -> Result_Code --- 305 busy_timeout :: proc "c" (db: ^Connection, ms: c.int) -> Result_Code --- 306 @(require_results) 307 column_database_name :: proc "c" (statement: ^Statement, col_idx: c.int) -> cstring --- 308 @(require_results) 309 column_database_name16 :: proc "c" (statement: ^Statement, col_idx: c.int) -> cstring --- 310 @(require_results) 311 column_table_name :: proc "c" (statement: ^Statement, col_idx: c.int) -> cstring --- 312 @(require_results) 313 column_table_name16 :: proc "c" (statement: ^Statement, col_idx: c.int) -> cstring --- 314 @(require_results) 315 column_origin_name :: proc "c" (statement: ^Statement, col_idx: c.int) -> cstring --- 316 @(require_results) 317 column_origin_name16 :: proc "c" (statement: ^Statement, col_idx: c.int) -> cstring --- 318 @(require_results) 319 column_decltype :: proc "c" (statement: ^Statement, col_idx: c.int) -> cstring --- 320 @(require_results) 321 column_decltype16 :: proc "c" (statement: ^Statement, col_idx: c.int) -> cstring --- 322 @(require_results) 323 column_text :: proc "c" (statement: ^Statement, col_idx: c.int) -> cstring --- 324 column_blob :: proc "c" (statement: ^Statement, col_idx: c.int) -> rawptr --- 325 column_double :: proc "c" (statement: ^Statement, col_idx: c.int) -> c.double --- 326 column_int :: proc "c" (statement: ^Statement, col_idx: c.int) -> c.int --- 327 column_int64 :: proc "c" (statement: ^Statement, col_idx: c.int) -> c.int64_t --- 328 column_bytes :: proc "c" (statement: ^Statement, col_idx: c.int) -> c.int --- 329 column_bytes16 :: proc "c" (statement: ^Statement, col_idx: c.int) -> c.int --- 330 column_type :: proc "c" (statement: ^Statement, col_idx: c.int) -> c.int --- 331 column_count :: proc "c" (statement: ^Statement) -> c.int --- 332 column_name :: proc "c" (statement: ^Statement, col_idx: c.int) -> cstring --- 333 commit_hook :: proc "c" (db: ^Connection, cb: proc "c" (ctx: rawptr) -> Result_Code, ctx: rawptr) -> rawptr --- 334 rollback_hook :: proc "c" (db: ^Connection, cb: proc "c" (ctx: rawptr) -> Result_Code, ctx: rawptr) -> rawptr --- 335 compileoption_used :: proc "c" (opt_name: cstring) -> c.int --- 336 @(require_results) 337 compileoption_get :: proc "c" (n: c.int) -> cstring --- 338 complete :: proc "c" (sql: cstring) -> c.int --- 339 complete16 :: proc "c" (sql: cstring) -> c.int --- 340 // TODO: this function should also have varargs 341 config :: proc "c" (option: Config_Option) -> Result_Code --- 342 sql :: proc "c" (statement: ^Statement) -> cstring --- 343 expanded_sql :: proc "c" (statement: ^Statement) -> cstring --- 344 threadsafe :: proc "c" () -> c.int --- 345 346 // Export SQLCipher-specific functions conditionally. 347 when USE_SQLCIPHER { 348 key :: proc "c" (db: ^Connection, key: rawptr, nKey: c.int) -> c.int --- 349 key_v2 :: proc "c" (db: ^Connection, zDbName: cstring, key: rawptr, nKey: c.int) -> c.int --- 350 rekey :: proc "c" (db: ^Connection, key: rawptr, nKey: c.int) -> c.int --- 351 rekey_v2 :: proc "c" (db: ^Connection, zDbName: cstring, key: rawptr, nKey: c.int) -> c.int --- 352 } 353}