with Ada.Strings.Unbounded, Ada.Text_IO, CSV; package body Bundles.Containers is package SU renames Ada.Strings.Unbounded; procedure Read_Bundles (Filename : in String; Result : out Bundle_Collection) is package My_CSV is new CSV; use Ada.Text_IO; use type Candidates.CandidateID; use type Bundle_Vectors.Vector; Input_File : File_Type; Current_Record : My_CSV.CSV_Record; Current_Prefs : Given_Prefs.Preference_Array; begin Result := (others => Bundle_Vectors.Empty_Vector & Empty_Bundle); Open (Input_File, In_File, Filename); while not End_Of_File (Input_File) loop Current_Record := My_CSV.Parse_Line (Get_Line (Input_File)); if Integer (Current_Record.Length) > 0 then Current_Prefs := Given_Prefs.Parse_Preferences (SU.To_String (Current_Record.Last_Element)); if Current_Prefs (Given_Prefs.Preference_Range'First) /= Candidates.No_Candidate then Result (Candidate_Range (Current_Prefs (Given_Prefs.Preference_Range'First))).Reference (1).Papers.Append (Current_Prefs); end if; end if; end loop; Close (Input_File); for B of Result loop if B.Reference (1) = Empty_Bundle then B.Delete (1); end if; end loop; end Read_Bundles; end Bundles.Containers;