with Interfaces.C; use Interfaces.C; with Interfaces.C.Strings; use Interfaces.C.Strings; package body Sqlite is procedure Finalize (Db : in out Database) is function sqlite3_close (Db : in out Database_Int) return Int with Import, Convention => C; function sqlite3_close_v2 (Db : in out Database_Int) return Int with Import, Convention => C; Error : int := 0; begin if Db.Version = v1 then Error := sqlite3_close (Db.Internal); else Error := sqlite3_close_v2 (Db.Internal); end if; end Finalize; procedure Open (Db : in out Database; Filename : String) is function sqlite3_open ( Filename : Chars_Ptr; ppDb : out Database_Int) return Int with Import, Convention => C; Error : Int; begin Error := sqlite3_open (New_String (Filename), Db.Internal); Db.Version := v1; end Open; procedure Close (Db : in out Database) is begin Db.Finalize; end Close; end Sqlite;