summaryrefslogtreecommitdiff
path: root/src/deckdata.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/deckdata.ads')
-rw-r--r--src/deckdata.ads107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/deckdata.ads b/src/deckdata.ads
new file mode 100644
index 0000000..ae73ef2
--- /dev/null
+++ b/src/deckdata.ads
@@ -0,0 +1,107 @@
+
+
+-- 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;
+
+