sqlite/Source/Spec/sqlite.ads
2025-07-25 16:17:14 +02:00

115 lines
3.7 KiB
Ada

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;