with Ada.Containers.Vectors, Ada.Strings.Unbounded, Ada.Text_IO; generic Separator_Char : Character := ','; Quote_Char : Character := '"'; Escape_Char : Character := '\'; package CSV is procedure Put_Cell (File_Handle : in Ada.Text_IO.File_Type; Data : in String); procedure Put_Cell (File_Handle : in Ada.Text_IO.File_Type; Data : in Ada.Strings.Unbounded.Unbounded_String); generic type Vector_Index is range <>; type Vector_Data is private; with package Data_Vectors is new Ada.Containers.Vectors (Vector_Index, Vector_Data); with function To_Unbounded_String (Data : in Vector_Data) return Ada.Strings.Unbounded.Unbounded_String is <>; procedure Put_Row (File_Handle : in Ada.Text_IO.File_Type; Cells : in Data_Vectors.Vector; Quantity : in Positive); private package SU renames Ada.Strings.Unbounded; 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 CSV;