[31m-- main is main file of main project written with Ada.[m
[31m-- Main is Copyright (C) 2025 Manuel De Girardi ; [m
[31m--[m
[31m--   This program is free software; you can redistribute it and/or modify[m
[31m--   it under the terms of the GNU General Public License as published by[m
[31m--   the Free Software Foundation; either version 2 of the License, or[m
[31m--   (at your option) any later version.[m
[31m--[m
[31m--   This program is distributed in the hope that it will be useful,[m
[31m--   but WITHOUT ANY WARRANTY; without even the implied warranty of[m
[31m--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the[m
[31m--   GNU General Public License for more details.[m
[31m--[m
[31m--   You should have received a copy of the GNU General Public License[m
[31m--   along with this program; if not, write to the Free Software[m
[31m--   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA[m
[31m--[m
[31m-- Date := 2026-10-11 18:01:55 ; [m
[31m-- Version := 0.53.0a ; [m
[01;34mwith[m Ada[31m.[mUnchecked_Deallocation[31m;[m
[01;34mpackage[m M[31m.[mStrings [01;34mis[m
   
   [31m--  type String_Access is access all String;[m
   [31m--  procedure Free is new Ada.Unchecked_Deallocation (String, String_Access);[m
   
   [01;34mtype[m Wide_String_Access [01;34mis[m [01;34maccess[m [01;34mall[m [32mWide_String[m[31m;[m
   [01;34mprocedure[m Wide_Free [01;34mis[m [01;34mnew[m Ada[31m.[m[01;30mUnchecked_Deallocation[m [31m([m[32mWide_String[m[31m,[m Wide_String_Access[31m);[m
   
   [01;34msubtype[m Line_Index_Range [01;34mis[m Natural [01;34mrange[m [35m0[m[31m..[m[35m132072[m[31m;[m
   [01;34mtype[m Wide_String_Array [01;34mis[m [01;34marray[m [31m([mLine_Index_Range [01;34mrange[m [31m<>)[m [01;34mof[m Wide_String_Access[31m;[m
   [01;34mtype[m [01;30mWide_String_Set[m [31m([mLines_Max [31m:[m Line_Index_Range[31m)[m [01;34mis[m [01;34mtagged[m
      [01;34mrecord[m
	 Lines [31m:[m [01;30mWide_String_Array[m[31m([m[35m1[m[31m..[mLines_Max[31m);[m
	 Line_Last [31m:[m Natural [31m:=[m [35m0[m[31m;[m	     
      [01;34mend[m [01;34mrecord[m[31m;[m   
   
   [01;34mtype[m Wide_Access [01;34mis[m [01;34maccess[m [01;34mall[m [32mWide_String[m[31m;[m
   [01;34mprocedure[m Wide_Free [01;34mis[m [01;34mnew[m Ada[31m.[m[01;30mUnchecked_Deallocation[m [31m([m[32mWide_String[m[31m,[m Wide_Access[31m);[m
   

   [01;34mtype[m Wide_Array [01;34mis[m [01;34marray[m [31m([mLine_Index_Range [01;34mrange[m [31m<>)[m [01;34mof[m Wide_Access[31m;[m
   [01;34mtype[m [01;30mWide_Set[m [31m([mLines_Max [31m:[m Line_Index_Range[31m)[m [01;34mis[m [01;34mtagged[m
      [01;34mrecord[m
   	 Lines [31m:[m [01;30mWide_Array[m[31m([m[35m1[m[31m..[mLines_Max[31m);[m
   	 Line_Last [31m:[m Natural [31m:=[m [35m0[m[31m;[m	     
      [01;34mend[m [01;34mrecord[m[31m;[m   
   
   [01;34mprocedure[m [01;30mAdd_Line[m [31m([mSet [31m:[m [01;34min[m [01;34mout[m Wide_Set[31m;[m
   		       Last [31m:[m [01;34min[m [01;34mout[m Line_Index_Range[31m;[m
   		       Line [31m:[m [01;34min[m [32mWide_String[m[31m);[m
   [01;34mprocedure[m [01;30mSet_Free[m[31m([mSet [31m:[m [01;34min[m [01;34mout[m Wide_Set[31m);[m
   [01;34mprocedure[m [01;30mLoad_File[m [31m([mSet [31m:[m [01;34min[m [01;34mout[m Wide_Set[31m;[m Name [31m:[m [01;34min[m [32mString[m[31m;[m Last [31m:[m [01;34mout[m Line_Index_Range[31m);[m
   [01;34mprocedure[m [01;30mSave_File[m[31m([mFilename [31m:[m [01;34min[m [32mstring[m[31m;[m Lines_Table [31m:[m [01;34min[m Wide_Set[31m);[m
   [01;34msubtype[m Wstring_32 [01;34mis[m
     [32mWide_String[m[31m([m[35m1[m[31m..[m[35m32[m[31m);[m 
   
   [01;34msubtype[m Product_Name [01;34mis[m WString_32[31m;[m   

   
   
   [31m--  procedure Add_Line (Set : in out Wide_String_Set;[m
   [31m--  		       Last : in out Line_Index_Range;[m
   [31m--  		       Line : in Wide_String);[m
   [31m--  procedure Set_Free(Set : in out Wide_String_Set);[m
   [31m--  procedure Load_File (Set : in out Wide_String_Set; Name : in String; Last : out Line_Index_Range);[m
   [31m--procedure Save_File(Filename : in string; Lines_Table : in Wide_String_Set);[m
[01;34mend[m M[31m.[mStrings [31m;[m 
