with Ada.Finalization; package Sqlite is type Database is tagged private; procedure Open (Db : in out Database; Filename : String); procedure Close (Db : in out Database); private type Database_Record_Int is null record; type Database_Int is access all Database_Record_Int; type Database_Version is (v1, v2); type Database is new Ada.Finalization.Controlled with record Internal : Database_Int; Version : Database_Version; end record; overriding procedure Finalize (Db : in out Database); end Sqlite;