X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=tests%2Fsqlite%2Fsqlite.psi;h=20c24d823d512be8a8a3d988adebd67258ea8115;hp=4bc8059823560ab73e236d0370fe67cd6aa7a5e7;hb=c9384515a81cb64d345b299908b2852f51bb8e6e;hpb=b029005e56a8913fbb3d17ab497b4a37a00a211c;ds=sidebyside diff --git a/tests/sqlite/sqlite.psi b/tests/sqlite/sqlite.psi index 4bc8059..20c24d8 100644 --- a/tests/sqlite/sqlite.psi +++ b/tests/sqlite/sqlite.psi @@ -1,19 +1,21 @@ lib "sqlite3"; -extern const char *sqlite3_libversion(void); +#include + +//extern const char *sqlite3_libversion(void); function sqlite3\version() : string { return to_string(sqlite3_libversion); } -extern const char *sqlite3_errstr(int errno); +//extern const char *sqlite3_errstr(int err); function sqlite3\errstr(int $errno) : string { - let errno = intval($errno); - return to_string(sqlite3_errstr); + let err = intval($errno); + return sqlite3_errstr(err) to_string(sqlite3_errstr); } /* obviously fake, we ever always need a pointer to it */ -struct sqlite3; - +//struct sqlite3; +/* typedef struct sqlite3 sqlite3; typedef int64_t sqlite_int64; @@ -25,28 +27,30 @@ typedef sqlite_uint64 sqlite3_uint64; extern void sqlite3_free(void *ptr); extern int sqlite3_close(sqlite3 *db); +*/ + function sqlite3\close(object &$db) : int { let db = objval($db); - return to_int(sqlite3_close); + return sqlite3_close(db) as to_int(sqlite3_close); // unset($db) as safe-guard set $db = void(db); } -extern int sqlite3_open(const char *filename, sqlite3 **db_ptr); +//extern int sqlite3_open(const char *filename, sqlite3 **db_ptr); function sqlite3\open(string $uri, object &$db) : int { let filename = pathval($uri); let db_ptr = &NULL; - return to_int(sqlite3_open); + return sqlite3_open(filename, db_ptr) as to_int(sqlite3_open); set $db = to_object(*db_ptr); } -typedef int (*sqlite3_callback)(void *data, int argc, char** argv, char** cols); +//typedef int (*sqlite3_callback)(void *data, int argc, char** argv, char** cols); -extern int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback cb, void *data, char **errmsg); +//extern int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback cb, void *data, char **errmsg); function sqlite3\exec(object $db, string $sql, callable $cb, mixed $cd, string &$error = null) : int { let db = objval($db); let sql = strval($sql); - let cb = callback intval( + let cb = callback(data, argc, argv, cols) as intval( $cb( zval(data), to_int(argc), @@ -56,7 +60,7 @@ function sqlite3\exec(object $db, string $sql, callable $cb, mixed $cd, string & ); let data = zval($cd); let errmsg = &NULL; - return to_int(sqlite3_exec); + return sqlite3_exec(db, sql, cb, data, errmsg) as to_int(sqlite3_exec); set $error = to_string(*errmsg); free sqlite3_free(*errmsg); }