#pragma once #include #include struct db_query { void *handle; }; struct db { void *handle; struct db_query single; }; struct db_query_arg { union { int32_t i32; double f64; struct { const void *data; int sz; } blob; // used for text as well } u; enum { DB_ARG_NULL, DB_ARG_I32, DB_ARG_F64, DB_ARG_BLOB, DB_ARG_UTF8, } type; }; void db_init(struct db *db, const char *target); struct db_query db_query_begin(struct db *db, const char *sql, const struct db_query_arg args[], const int num_args); int db_query_fetch(struct db_query *query, struct db_query_arg columns[], const int num_columns); void db_query_end(struct db_query *query); int db_query_single(struct db *db, const char *sql, const struct db_query_arg args[], const int num_args, struct db_query_arg columns[], const int num_columns); void db_gc(struct db *db); void db_release(struct db *db);