with Ada.Strings.Unbounded, System, Interfaces.C; package SQLite3 is type SQLite3_DB is private; type SQLite3_Statement is private; type Open_Flag is mod 2**32; type Prepare_Flag is mod 2**32; type Status_Code is new Long_Integer; subtype SQL_Parameter_Index is Integer range 1 .. Integer'Last; subtype SQL_Column_Index is Integer; type Int is new Interfaces.C.int; OPEN_READONLY : constant Open_Flag := 1; OPEN_READWRITE : constant Open_Flag := 2; OPEN_CREATE : constant Open_Flag := 4; OPEN_DELETEONCLOSE : constant Open_Flag := 8; OPEN_EXCLUSIVE : constant Open_Flag := 16; OPEN_AUTOPROXY : constant Open_Flag := 32; OPEN_URI : constant Open_Flag := 64; OPEN_MEMORY : constant Open_Flag := 128; OPEN_MAIN_DB : constant Open_Flag := 256; OPEN_TEMP_DB : constant Open_Flag := 512; OPEN_TRANSIENT_DB : constant Open_Flag := 1024; OPEN_MAIN_JOURNAL : constant Open_Flag := 2048; OPEN_TEMP_JOURNAL : constant Open_Flag := 4096; OPEN_SUBJOURNAL : constant Open_Flag := 8192; OPEN_SUPER_JOURNAL : constant Open_Flag := 16384; OPEN_NOMUTEX : constant Open_Flag := 32768; OPEN_FULLMUTEX : constant Open_Flag := 65536; OPEN_SHAREDCACHE : constant Open_Flag := 131072; OPEN_PRIVATECACHE : constant Open_Flag := 262144; OPEN_WAL : constant Open_Flag := 524288; OPEN_NOFOLLOW : constant Open_Flag := 16777216; PREPARE_PERSISTENT : constant Prepare_Flag := 1; PREPARE_NORMALIZE : constant Prepare_Flag := 2; PREPARE_NO_VTAB : constant Prepare_Flag := 4; SQLITE_OK : constant Status_Code := 0; SQLITE_ROW : constant Status_Code := 100; SQLITE_DONE : constant Status_Code := 101; SQLITE_TRANSIENT : constant := -1; procedure Open (Filename : in String; Handle : out SQLite3_DB); procedure Open (Filename : in String; Handle : out SQLite3_DB; Flags : in Open_Flag); procedure Close (Handle : in out SQLite3_DB); procedure Prepare (Handle : in SQLite3_DB; SQL : in String; SQL_Handle : out SQLite3_Statement); procedure Prepare (Handle : in SQLite3_DB; SQL : in String; Flags : in Prepare_Flag; SQL_Handle : out SQLite3_Statement); procedure Step (SQL_Handle : in SQLite3_Statement; Status : out Status_Code); procedure Finish (SQL_Handle : in SQLite3_Statement); procedure Reset (SQL_Handle : in SQLite3_Statement); procedure Bind (SQL_Handle : in SQLite3_Statement; Index : in SQL_Parameter_Index; Value : in Integer); procedure Bind (SQL_Handle : in SQLite3_Statement; Index : in SQL_Parameter_Index; Value : in Long_Integer); procedure Bind (SQL_Handle : in SQLite3_Statement; Index : in SQL_Parameter_Index; Value : in Ada.Strings.Unbounded.Unbounded_String); procedure Column (SQL_Handle : in SQLite3_Statement; Index : in SQL_Column_Index; Value : out Int); procedure Column (SQL_Handle : in SQLite3_Statement; Index : in SQL_Column_Index; Value : out Ada.Strings.Unbounded.Unbounded_String); private -- There are actually many more errors than this SQLITE_ERROR : constant Status_Code := 1; function Error_Message (Handle : in SQLite3_DB) return String; function Error_String (Status : in Status_Code) return String; type DB_Private is null record; type DB_Private_Access is access all DB_Private; type SQLite3_DB is record Ptr : aliased DB_Private_Access; end record; type Statement_Private is null record; type Statement_Private_Access is access all Statement_Private; type SQLite3_Statement is record Ptr : aliased Statement_Private_Access; end record; end SQLite3;