Skip to main content

libsqlite3_sys/
lib.rs

1#![expect(non_snake_case, non_camel_case_types)]
2
3// force linking to openssl
4#[cfg(feature = "bundled-sqlcipher-vendored-openssl")]
5extern crate openssl_sys;
6
7pub use self::error::*;
8
9use core::mem;
10
11pub mod decimal;
12mod error;
13pub mod native;
14#[path = "../native_types.rs"]
15mod native_types;
16mod temporal;
17mod temporal_functions;
18mod unsigned;
19pub mod wire;
20
21#[must_use]
22pub fn SQLITE_STATIC() -> sqlite3_destructor_type {
23    None
24}
25
26#[must_use]
27pub fn SQLITE_TRANSIENT() -> sqlite3_destructor_type {
28    Some(unsafe { mem::transmute::<isize, unsafe extern "C" fn(*mut core::ffi::c_void)>(-1_isize) })
29}
30
31#[allow(dead_code, clippy::all)]
32mod bindings {
33    include!(concat!(env!("OUT_DIR"), "/bindgen.rs"));
34}
35pub use bindings::*;
36
37// Rust clients read storage cells for typed decoding. C extensions use the
38// standard column accessors, which expose logical BLOB payloads.
39unsafe extern "C" {
40    #[link_name = "sqlite3_boxdb_column_blob"]
41    pub fn sqlite3_column_blob(
42        statement: *mut sqlite3_stmt,
43        column: i32,
44    ) -> *const core::ffi::c_void;
45    #[link_name = "sqlite3_boxdb_column_bytes"]
46    pub fn sqlite3_column_bytes(statement: *mut sqlite3_stmt, column: i32) -> i32;
47    #[link_name = "sqlite3_boxdb_column_bytes16"]
48    pub fn sqlite3_column_bytes16(statement: *mut sqlite3_stmt, column: i32) -> i32;
49}
50
51impl Default for sqlite3_vtab {
52    fn default() -> Self {
53        unsafe { mem::zeroed() }
54    }
55}
56
57impl Default for sqlite3_vtab_cursor {
58    fn default() -> Self {
59        unsafe { mem::zeroed() }
60    }
61}