Files
sqlite/sqlite/capi.kk

130 lines
4.3 KiB
Plaintext

// Minimal SQLite3 C API wrapper.
// This module is for internal use and should not be used directly.
module sqlite/capi
pub import std/num/int32
extern import
c file "sqlite-define.c"
extern import
c file "sqlite3.c"
extern import
c file "sqlite-inline.c"
extern make-sqlite-ok(): int32
c inline "SQLITE_OK"
pub val int32/sqlite-ok: int32 = make-sqlite-ok()
extern make-sqlite-open-readonly(): int32 { c inline "SQLITE_OPEN_READONLY" }
extern make-sqlite-open-readwrite(): int32 { c inline "SQLITE_OPEN_READWRITE" }
extern make-sqlite-open-readwritecreate(): int32 { c inline "SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE" }
pub val int32/open-readonly = make-sqlite-open-readonly()
pub val int32/open-readwrite = make-sqlite-open-readwrite()
pub val int32/open-readwritecreate = make-sqlite-open-readwritecreate()
extern make-sqlite-open-uri(): int32 { c inline "SQLITE_OPEN_URI" }
extern make-sqlite-open-sharedcache(): int32 { c inline "SQLITE_OPEN_SHAREDCACHE" }
extern make-sqlite-open-memory(): int32 { c inline "SQLITE_OPEN_MEMORY" }
extern make-sqlite-open-exrescode(): int32 { c inline "SQLITE_OPEN_EXRESCODE" }
extern make-sqlite-open-nomutex(): int32 { c inline "SQLITE_OPEN_NOMUTEX" }
extern make-sqlite-open-fullmutex(): int32 { c inline "SQLITE_OPEN_FULLMUTEX" }
pub val int32/open-uri = make-sqlite-open-uri()
pub val int32/open-sharedcache = make-sqlite-open-sharedcache()
pub val int32/open-memory = make-sqlite-open-memory()
pub val int32/open-exrescode = make-sqlite-open-exrescode()
pub val int32/open-nomutex = make-sqlite-open-nomutex()
pub val int32/open-fullmutex = make-sqlite-open-fullmutex()
pub extern initialize(): int32
c inline "sqlite3_initialize()"
pub extern shutdown(): int32
c inline "sqlite3_shutdown()"
pub extern errstr(x: int32): string
c "kk_sqlite3_errstr"
pub extern extended-errcode(^db: any): int32
c "kk_sqlite3_extended_errcode"
pub extern error-offset(^db: any): int
c "kk_sqlite3_error_offset"
pub extern open-v2(^filename: string, flags: int32, ^vfs: string): (any, int32)
c "kk_sqlite3_open_v2"
pub extern close(^db: any): int32
c "kk_sqlite3_close"
pub extern prepare-v3(^db: any, ^sql: sslice, flags: int32): (any, sslice, int32)
c "kk_sqlite3_prepare_v3"
pub extern finalize(^stmt: any): int32
c "kk_sqlite3_finalize"
pub extern step(^stmt: any): int32
c "kk_sqlite3_step"
pub extern reset(^stmt: any): int32
c "kk_sqlite3_reset"
pub extern column-count(^stmt: any): int
c "kk_sqlite3_column_count"
pub extern column-type(^stmt: any, col: int32): int32
c "kk_sqlite3_column_type"
extern make-sqlite-integer(): int32 { c inline "SQLITE_INTEGER" }
extern make-sqlite-float(): int32 { c inline "SQLITE_FLOAT" }
extern make-sqlite-blob(): int32 { c inline "SQLITE_BLOB" }
extern make-sqlite-null(): int32 { c inline "SQLITE_NULL" }
extern make-sqlite-text(): int32 { c inline "SQLITE_TEXT" }
pub val int32/integer = make-sqlite-integer()
pub val int32/float = make-sqlite-float()
pub val int32/blob = make-sqlite-blob()
pub val int32/null = make-sqlite-null()
pub val int32/text = make-sqlite-text()
//TODO(zephyr): waiting on a proper bytes type in koka
// pub extern column-blob(^stmt: any, col: int32): maybe<bytes>
// c "kk_sqlite3_column_blob"
pub extern column-double(^stmt: any, col: int32): float64
c "kk_sqlite3_column_double"
pub extern column-integer(^stmt: any, col: int32): int
c "kk_sqlite3_column_integer"
pub extern column-text(^stmt: any, col: int32): string
c "kk_sqlite3_column_text"
// pub extern bind-blob(^stmt: any, col: int32, ^value: bytes): int32
// c "kk_sqlite3_bind_blob"
pub extern bind-double(^stmt: any, param: int32, ^value: float64): int32
c "kk_sqlite3_bind_double"
pub extern bind-int64(^stmt: any, param: int32, value: int64): int32
c "kk_sqlite3_bind_int64"
pub extern bind-null(^stmt: any, param: int32): int32
c "kk_sqlite3_bind_null"
pub extern bind-text(^stmt: any, param: int32, ^value: string): int32
c "kk_sqlite3_bind_text"
pub extern bind-zeroblob(^stmt: any, param: int32, length: int64): int32
c "kk_sqlite3_bind_zeroblob"
pub extern clear-bindings(^stmt: any): int32
c "kk_sqlite3_clear_bindings"
pub extern parameter-count(^stmt: any): int32
c "kk_sqlite3_parameter_count"
pub extern parameter-name(^stmt: any, param: int32): string
c "kk_sqlite3_parameter_name"
pub extern parameter-index(^stmt: any, name: string): int32
c "kk_sqlite3_parameter_index"