make C constants values

This commit is contained in:
2026-03-03 23:24:51 -05:00
parent f1e9650c97
commit 19e6aa82a6
2 changed files with 15 additions and 10 deletions

View File

@@ -53,11 +53,16 @@ pub extern column-count(^stmt: any): int
pub extern column-type(^stmt: any, col: int32): int32
c "kk_sqlite3_column_type"
pub extern int32/integer(): int32 { c inline "SQLITE_INTEGER" }
pub extern int32/float(): int32 { c inline "SQLITE_FLOAT" }
pub extern int32/blob(): int32 { c inline "SQLITE_BLOB" }
pub extern int32/null(): int32 { c inline "SQLITE_NULL" }
pub extern int32/text(): int32 { c inline "SQLITE_TEXT" }
extern make-sqlite-integer(): int32 { c inline "SQLITE_INTEGER" }
pub val int32/integer = make-sqlite-integer()
extern make-sqlite-float(): int32 { c inline "SQLITE_FLOAT" }
pub val int32/float = make-sqlite-float()
extern make-sqlite-blob(): int32 { c inline "SQLITE_BLOB" }
pub val int32/blob = make-sqlite-blob()
extern make-sqlite-null(): int32 { c inline "SQLITE_NULL" }
pub val int32/null = make-sqlite-null()
extern make-sqlite-text(): int32 { c inline "SQLITE_TEXT" }
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>

View File

@@ -1,7 +1,7 @@
// Low level wrapper around a modern subset of the SQLite3 API.
//
// Using this module involves manual resource management.
//
// Statements must be finalized and databases must be closed.
module sqlite/sqlite3
import sqlite/capi
@@ -143,10 +143,10 @@ pub type sqlite3-type
// The leftmost column is numbered 0.
pub fun statment/column-type(stmt: statement, col: int): sqlite3-type
val t = capi/column-type(stmt.cref, col.int32)
if t == int32/integer() then Integer
else if t == int32/float() then Float
else if t == int32/blob() then Blob
else if t == int32/text() then Text
if t == capi/int32/integer then Integer
else if t == capi/int32/float then Float
else if t == capi/int32/blob then Blob
else if t == capi/int32/text then Text
// If the DB gives us something unimaginable, pretend it's nothing.
else Null