DEFINITION MODULE SQLiteUtils ; (* m2SQLITE - small pure-Modula-2 helpers over the FOR "C" SQLite binding. CStrToM2 copies NUL-terminated C strings (ADDRESS) into Modula-2 CHAR arrays (NUL-terminated, truncated to fit). StaticDestr/TransientDestr return the SQLITE_STATIC and SQLITE_TRANSIENT destructor sentinels; BindTextCopy/BindBlobCopy bind with SQLITE_TRANSIENT so SQLite copies the value. *) FROM SYSTEM IMPORT ADDRESS; FROM SQLite IMPORT DbHandle, StmtHandle, ContextHandle, ValueHandle, BackupHandle; EXPORT UNQUALIFIED CStrToM2, ErrMsg, ErrStr, LibVersionStr, StaticDestr, TransientDestr, BindTextCopy, BindBlobCopy, ValueText, ResultTextCopy, BackupToFile, GetTable, TableCell, FreeTable, ExecSimple, ExecWithErr; PROCEDURE CStrToM2 (src: ADDRESS; VAR dst: ARRAY OF CHAR); PROCEDURE ErrMsg (db: DbHandle; VAR buf: ARRAY OF CHAR); PROCEDURE ErrStr (code: INTEGER; VAR buf: ARRAY OF CHAR); PROCEDURE LibVersionStr (VAR buf: ARRAY OF CHAR); PROCEDURE StaticDestr () : ADDRESS; PROCEDURE TransientDestr () : ADDRESS; PROCEDURE BindTextCopy (stmt: StmtHandle; idx: INTEGER; v: ARRAY OF CHAR) : INTEGER; PROCEDURE BindBlobCopy (stmt: StmtHandle; idx: INTEGER; data: ADDRESS; n: INTEGER) : INTEGER; PROCEDURE ValueText (v: ValueHandle; VAR buf: ARRAY OF CHAR); PROCEDURE ResultTextCopy (ctx: ContextHandle; str: ARRAY OF CHAR); PROCEDURE BackupToFile (srcDb: DbHandle; filename: ARRAY OF CHAR) : INTEGER; PROCEDURE GetTable (db: DbHandle; sql: ARRAY OF CHAR; VAR tbl: ADDRESS; VAR rows, cols: INTEGER; VAR errbuf: ARRAY OF CHAR) : INTEGER; PROCEDURE TableCell (tbl: ADDRESS; cols, row, col: INTEGER; VAR buf: ARRAY OF CHAR); PROCEDURE FreeTable (tbl: ADDRESS); PROCEDURE ExecSimple (db: DbHandle; sql: ARRAY OF CHAR) : INTEGER; PROCEDURE ExecWithErr (db: DbHandle; sql: ARRAY OF CHAR; VAR buf: ARRAY OF CHAR) : INTEGER; END SQLiteUtils.