with Ada.Finalization; package Sqlite is type Database_Open is ( ReadOnly, ReadWrite ); type Database_Mutex is ( Disabled, No_Mutex, Full_Mutex ); type Database_Cache is ( Disabled, Shared_Cache, Private_Cache ); type Database is tagged private; procedure Open (Db : in out Database; Filename : String); procedure Open ( Db : in out Database; Filename : String; RW : Database_Open; Create : Boolean; Filename_URI : Boolean := False; Open_In_Memory : Boolean := False; Mutex : Database_Mutex := Disabled; Cache : Database_Cache := Disabled; Expres_Code : Boolean := False; No_Follow : Boolean := False); 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); type Bit_10 is mod 2**10 with Size => 10; type Database_Int_Flags is record Open_ReadOnly : Boolean := False; Open_ReadWrite : Boolean := False; Open_Create : Boolean := False; Open_DeleteOnClose : Boolean := False; Open_Exclusive : Boolean := False; Open_AutoProxy : Boolean := False; Open_URI : Boolean := False; Open_Memory : Boolean := False; Open_Main_DB : Boolean := False; Open_Temp_DB : Boolean := False; Open_Transient_DB : Boolean := False; Open_Main_Journal : Boolean := False; Open_Temp_Journal : Boolean := False; Open_Sub_Journal : Boolean := False; Open_Super_Journal : Boolean := False; Open_NoMutex : Boolean := False; Open_FullMutex : Boolean := False; Open_SharedCache : Boolean := False; Open_PrivateCache : Boolean := False; Open_WAL : Boolean := False; Open_NoFollow : Boolean := False; Open_ExpresCode : Boolean := False; Reserved : Bit_10 := 0; end record with Size => 32; for Database_Int_Flags use record Open_ReadOnly at 0 range 0 .. 0; Open_ReadWrite at 0 range 1 .. 1; Open_Create at 0 range 2 .. 2; Open_DeleteOnClose at 0 range 3 .. 3; Open_Exclusive at 0 range 4 .. 4; Open_AutoProxy at 0 range 5 .. 5; Open_URI at 0 range 6 .. 6; Open_Memory at 0 range 7 .. 7; Open_Main_DB at 0 range 8 .. 8; Open_Temp_DB at 0 range 9 .. 9; Open_Transient_DB at 0 range 10 .. 10; Open_Main_Journal at 0 range 11 .. 11; Open_Temp_Journal at 0 range 12 .. 12; Open_Sub_Journal at 0 range 13 .. 13; Open_Super_Journal at 0 range 14 .. 14; Open_NoMutex at 0 range 15 .. 15; Open_FullMutex at 0 range 16 .. 16; Open_SharedCache at 0 range 17 .. 17; Open_PrivateCache at 0 range 18 .. 18; Open_WAL at 0 range 19 .. 19; Open_NoFollow at 0 range 20 .. 20; Open_ExpresCode at 0 range 21 .. 21; Reserved at 0 range 22 .. 31; end record; end Sqlite;