-- This source is licensed under the Sunset License v1.0 with Ada.Containers.Vectors, Ada.Containers.Ordered_Maps, Ada.Strings.Unbounded; package Deckdata is package SU renames Ada.Strings.Unbounded; type Field_Ordinal is new Positive; type Field_ID is new SU.Unbounded_String; package Field_ID_Vectors is new Ada.Containers.Vectors (Index_Type => Field_Ordinal, Element_Type => Field_ID); subtype Field_ID_Vector is Field_ID_Vectors.Vector; type Template is record Question : Field_ID_Vectors.Vector; Answer : Field_ID_Vectors.Vector; end record; package Template_Vectors is new Ada.Containers.Vectors (Index_Type => Positive, Element_Type => Template); subtype Template_Vector is Template_Vectors.Vector; type Model_ID is new SU.Unbounded_String; type Model is record Fields : Field_ID_Vectors.Vector; Templates : Template_Vectors.Vector; end record; package Model_Maps is new Ada.Containers.Ordered_Maps (Key_Type => Model_ID, Element_Type => Model); subtype Model_Map is Model_Maps.Map; type Field is new SU.Unbounded_String; package Field_Vectors is new Ada.Containers.Vectors (Index_Type => Field_Ordinal, Element_Type => Field); subtype Field_Vector is Field_Vectors.Vector; type Note is record Model : Model_ID; Fields : Field_Vectors.Vector; end record; package Note_Vectors is new Ada.Containers.Vectors (Index_Type => Positive, Element_Type => Note); subtype Note_Vector is Note_Vectors.Vector; type Media_Name is new SU.Unbounded_String; type Media_ID is new SU.Unbounded_String; package Media_Maps is new Ada.Containers.Ordered_Maps (Key_Type => Media_Name, Element_Type => Media_ID); type Media_Collection is record Filename : SU.Unbounded_String; Map : Media_Maps.Map; end record; private function "+" (S : in String) return SU.Unbounded_String renames SU.To_Unbounded_String; function "-" (US : in SU.Unbounded_String) return String renames SU.To_String; end Deckdata;