-- This source is licensed under the Sunset License v1.0 private with Ada.Finalization, SQLite3; package Deckdata.IO is use type SU.Unbounded_String; type Deck_Handle is limited private; function Matches (Models : in Model_Map; Notes : in Note_Vector) return Boolean; procedure Read_Media_Collection (Filename : in String; Media : out Media_Collection); procedure Open_Database (Filename : in String; Deck : in out Deck_Handle) with Post => Is_Open (Deck); function Is_Open (Deck : in Deck_Handle) return Boolean; procedure Close_Database (Deck : in out Deck_Handle) with Post => not Is_Open (Deck); procedure Query_Models (Deck : in out Deck_Handle; Models : out Model_Map) with Pre => Is_Open (Deck); procedure Query_Notes (Deck : in out Deck_Handle; Notes : out Note_Vector) with Pre => Is_Open (Deck); procedure Write_CSV (Directory : in String; Basename : in String; Models : in Model_Map; Notes : in Note_Vector; Overwrite : in Boolean := False) with Pre => Matches (Models, Notes); procedure Write_FMD (Directory : in String; Basename : in String; Models : in Model_Map; Notes : in Note_Vector; Media : in Media_Collection; Overwrite : in Boolean := False) with Pre => Matches (Models, Notes); private type Deck_Handle is new Ada.Finalization.Limited_Controlled with record SQL_Handle : SQLite3.SQLite3_DB; Status : SQLite3.Status_Code := SQLite3.SQLITE_OK; Opened : Boolean := False; Tempfile : SU.Unbounded_String := SU.To_Unbounded_String (""); end record; overriding procedure Finalize (This : in out Deck_Handle); end Deckdata.IO;