-- main is main file of main project written with Ada.
-- Main is Copyright (C) 2025 Manuel De Girardi ; 
--
--   This program is free software; you can redistribute it and/or modify
--   it under the terms of the GNU General Public License as published by
--   the Free Software Foundation; either version 2 of the License, or
--   (at your option) any later version.
--
--   This program is distributed in the hope that it will be useful,
--   but WITHOUT ANY WARRANTY; without even the implied warranty of
--   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--   GNU General Public License for more details.
--
--   You should have received a copy of the GNU General Public License
--   along with this program; if not, write to the Free Software
--   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
--
-- Date := "2025-06-04 11:53:09"
-- Version := "0.0.0r"
package M.Parameters is
   
      type Parameter_Record (Requiered_Parameter : Boolean) is tagged
      record	 
	 Switch   : access Wide_String;	 	 
	 Num_Iter : Natural := 0;	 	 
	 Is_Setted : Boolean := False;	 
	 Parameter_Flag : Flag_Enum := None;	 
	 Descr : access Wide_String;	 
	 case Requiered_Parameter is
	    when False =>
	       null;
	    when True =>
	       
	       param : access Wide_String;
	       Value : access Wide_String;
	 end case;
      end record;
   
   type Parameters_Kit is 
     array (Flag_Enum) of 
     access Parameter_Record;
   
   
   Line_Parameters : constant Parameters_Kit := 
     (
      
      None => null,
      Config_Filename => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("F"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Config_Filename, 
	 Descr => new Wide_String ' ("Configuration filename"),
	 Param => new Wide_String ' ("Wide_String"),
	 Value => null),
      Help => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("h"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => help, 
	 Descr => new Wide_String ' ("print this message")),
      Quiet => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("q"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Quiet, 
	 Descr => new Wide_String ' ("quiet option")),
      Version => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("v"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Version, 
	 Descr => new Wide_String ' ("print the version")),
      Initialize => new Parameter_Record '	
	(Requiered_Parameter => True, Switch => new Wide_String ' ("i"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Initialize, 
	 Descr => new Wide_String ' ("initiaize total value"),
	 Param => new Wide_String ' ("fixed from -999999.99 to 999999.99"),
	 Value => null),
      Total => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("t"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Total, 
	 Descr => new Wide_String ' ("print fixed from -999999.99 to 999999.99")),
      Geometry => new Parameter_Record '	
	(Requiered_Parameter => True, Switch => new Wide_String ' ("g"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => geometry, 
	 Descr => new Wide_String ' ("Descibe the term geometry ; (eg : 67x240)"),
	 Param => new Wide_String ' ("String"),
	 Value => null),
      style => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("s"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => style, 
	 Descr => new Wide_String ' ("style"),
	 Param => new Wide_String ' ("string : Black_And_White, Black_And_Color, Color_And_White" &
				       Wide_Character'Val(10) &
				       "                       White_And_Color, Color_And_Color, White_And_White"),
	 Value => null),
            Samples_Filename => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("f"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag =>  Samples_filename, 
	 Descr => new Wide_String ' ("Samples filename"),
	 Param => new Wide_String ' ("Wide_String"),
	 Value => null),
      Max_epochs => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("m"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Max_Epochs, 
	 Descr => new Wide_String ' ("Max_Epochs"),
	 Param => new Wide_String ' ("Integer"),
	 Value => null),
      Converged => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("c"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Converged, 
	 Descr => new Wide_String ' ("Converged"),
	 Param => new Wide_String ' ("Real number"),
	 Value => null),
      Reuse => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("r"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Reuse, 
	 Descr => new Wide_String ' ("Reuse")),	 
      Train => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("l"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Train, 
	 Descr => new Wide_String ' ("Train")),
      Num_samples => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("n"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Num_Samples, 
	 Descr => new Wide_String ' ("Num_Samples"),
	 Param => new Wide_String ' ("Integer"),
	 Value => null),      
      Line_Width => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("W"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Line_Width, 
	 Descr => new Wide_String ' ("Line_Width"),
	 Param => new Wide_String ' ("integer"),
	 Value => null),
            Char_Max => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("c"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Char_Max,
	 Descr => new Wide_String ' ("Line length max"),
	 Param => new Wide_String ' ("Char_Index_Type"),
	 Value => null),

      Words_Max => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("L"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Words_Max, 
	 Descr => new Wide_String ' ("Words_Max"),
	 Param => new Wide_String ' ("integer"),
	 Value => null),
      Num_hidden => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("H"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Num_hidden, 
	 Descr => new Wide_String ' ("Num_hidden"),
	 Param => new Wide_String ' ("integer"),
	 Value => null),
      Update => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("u"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Update, 
	 Descr => new Wide_String ' ("update"),
	 Param => new Wide_String ' ("string"),
	 Value => null),
      As_server => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("a"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => As_server, 
	 Descr => new Wide_String ' ("As server")),
      Term_Name => new Parameter_Record '
      	(Requiered_Parameter => True, Switch => new Wide_String ' ("N"), Num_Iter => 0,
      	 Is_Setted => False, Parameter_Flag => Term_Name, 
      	 Descr => new Wide_String ' ("Terminal name"),
      	 Param => new Wide_String ' ("String"),
      	 Value => null),

      Self_Programming => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("p"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Self_Programming,
	 Descr => new Wide_String ' ("Self programming"),
	 Param => new Wide_String ' ("Boolean"),
	 Value => null),
      Self_Executed => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("e"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Self_Executed,
	 Descr => new Wide_String ' ("Self Executed"),
	 Param => new Wide_String ' ("Boolean"),
	 Value => null),
      Self_Wait => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("w"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Self_Wait,
	 Descr => new Wide_String ' ("Self wait"),
	 Param => new Wide_String ' ("Duration"),
	 Value => null),
            Username => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("e"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Username, 
	 Descr => new Wide_String ' ("user name"),
	 Param => new Wide_String ' ("String"),
	 Value => null),
      Address => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("A"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Address, 
	 Descr => new Wide_String ' ("remote address"),
	 Param => new Wide_String ' ("String"),
	 Value => null),
      Input_Text => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("i"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Input_Text, 
	 Descr => new Wide_String ' ("input text"),
	 Param => new Wide_String ' ("Wide_String"),
	 Value => null),
      Name_Length => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("n"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Name_Length,
	 Descr => new Wide_String ' ("Name length max"),
	 Param => new Wide_String ' ("Name_Index_Type"),
	 Value => null),
      Unit_Max => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("u"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Unit_Max,
	 Descr => new Wide_String ' ("Units max"),
	 Param => new Wide_String ' ("Unit_Index_Type"),
	 Value => null),
      Object_Max => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("o"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Object_Max, 
	 Descr => new Wide_String ' ("Object max"),
	 Param => new Wide_String ' ("Object_index_type"),
	 Value => null),

      User_wait => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("W"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => User_Wait,
	 Descr => new Wide_String ' ("User wait"),
	 Param => new Wide_String ' ("Duration"),
	 Value => null),
      Human_Lang => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("l"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Human_Lang, 
	 Descr => new Wide_String ' ("Human Language I18 abrev"),
	 Param => new Wide_String ' ("Human_Lang_Enum"),
	 Value => null),
      With_Gtk => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("g"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => With_Gtk, 
	 Descr => new Wide_String ' ("with GtkAda"),
	 Param => new Wide_String ' ("Boolean"),
	 Value => null),
      With_Ada => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("a"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => With_Ada, 
	 Descr => new Wide_String ' ("with Ada"),
	 Param => new Wide_String ' ("Boolean"),
	 Value => null),
      With_Aws => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("s"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => With_Aws, 
	 Descr => new Wide_String ' ("with AWS"),
	 Param => new Wide_String ' ("Boolean"),
	 Value => null)

	
     );
   
   File_Parameters : constant Parameters_Kit := 
     (
      
            None => null,
      Config_Filename => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("F"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Config_Filename, 
	 Descr => new Wide_String ' ("Configuration filename"),
	 Param => new Wide_String ' ("Wide_String"),
	 Value => null),
      Help => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("h"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => help, 
	 Descr => new Wide_String ' ("print this message")),
      Quiet => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("q"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Quiet, 
	 Descr => new Wide_String ' ("quiet option")),
      Version => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("v"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Version, 
	 Descr => new Wide_String ' ("print the version")),
      Initialize => new Parameter_Record '	
	(Requiered_Parameter => True, Switch => new Wide_String ' ("i"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Initialize, 
	 Descr => new Wide_String ' ("initiaize total value"),
	 Param => new Wide_String ' ("fixed from -999999.99 to 999999.99"),
	 Value => null),
      Total => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("t"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Total, 
	 Descr => new Wide_String ' ("print fixed from -999999.99 to 999999.99")),
      Geometry => new Parameter_Record '	
	(Requiered_Parameter => True, Switch => new Wide_String ' ("g"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => geometry, 
	 Descr => new Wide_String ' ("Descibe the term geometry ; (eg : 67x240)"),
	 Param => new Wide_String ' ("String"),
	 Value => null),
      style => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("s"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => style, 
	 Descr => new Wide_String ' ("style"),
	 Param => new Wide_String ' ("string : Black_And_White, Black_And_Color, Color_And_White" &
				       Wide_Character'Val(10) &
				       "                       White_And_Color, Color_And_Color, White_And_White"),
	 Value => null),
            Samples_Filename => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("f"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag =>  Samples_filename, 
	 Descr => new Wide_String ' ("Samples filename"),
	 Param => new Wide_String ' ("Wide_String"),
	 Value => null),
      Max_epochs => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("m"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Max_Epochs, 
	 Descr => new Wide_String ' ("Max_Epochs"),
	 Param => new Wide_String ' ("Integer"),
	 Value => null),
      Converged => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("c"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Converged, 
	 Descr => new Wide_String ' ("Converged"),
	 Param => new Wide_String ' ("Real number"),
	 Value => null),
      Reuse => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("r"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Reuse, 
	 Descr => new Wide_String ' ("Reuse")),	 
      Train => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("l"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Train, 
	 Descr => new Wide_String ' ("Train")),
      Num_samples => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("n"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Num_Samples, 
	 Descr => new Wide_String ' ("Num_Samples"),
	 Param => new Wide_String ' ("Integer"),
	 Value => null),      
      Line_Width => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("W"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Line_Width, 
	 Descr => new Wide_String ' ("Line_Width"),
	 Param => new Wide_String ' ("integer"),
	 Value => null),
            Char_Max => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("c"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Char_Max,
	 Descr => new Wide_String ' ("Line length max"),
	 Param => new Wide_String ' ("Char_Index_Type"),
	 Value => null),

      Words_Max => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("L"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Words_Max, 
	 Descr => new Wide_String ' ("Words_Max"),
	 Param => new Wide_String ' ("integer"),
	 Value => null),
      Num_hidden => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("H"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Num_hidden, 
	 Descr => new Wide_String ' ("Num_hidden"),
	 Param => new Wide_String ' ("integer"),
	 Value => null),
      Update => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("u"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Update, 
	 Descr => new Wide_String ' ("update"),
	 Param => new Wide_String ' ("string"),
	 Value => null),
      As_server => new Parameter_Record '
	(Requiered_Parameter => False, Switch => new Wide_String ' ("a"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => As_server, 
	 Descr => new Wide_String ' ("As server")),
      Term_Name => new Parameter_Record '
      	(Requiered_Parameter => True, Switch => new Wide_String ' ("N"), Num_Iter => 0,
      	 Is_Setted => False, Parameter_Flag => Term_Name, 
      	 Descr => new Wide_String ' ("Terminal name"),
      	 Param => new Wide_String ' ("String"),
      	 Value => null),

      Self_Programming => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("p"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Self_Programming,
	 Descr => new Wide_String ' ("Self programming"),
	 Param => new Wide_String ' ("Boolean"),
	 Value => null),
      Self_Executed => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("e"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Self_Executed,
	 Descr => new Wide_String ' ("Self Executed"),
	 Param => new Wide_String ' ("Boolean"),
	 Value => null),
      Self_Wait => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("w"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Self_Wait,
	 Descr => new Wide_String ' ("Self wait"),
	 Param => new Wide_String ' ("Duration"),
	 Value => null),
            Username => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("e"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Username, 
	 Descr => new Wide_String ' ("user name"),
	 Param => new Wide_String ' ("String"),
	 Value => null),
      Address => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("A"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Address, 
	 Descr => new Wide_String ' ("remote address"),
	 Param => new Wide_String ' ("String"),
	 Value => null),
      Input_Text => new Parameter_Record '
	(Requiered_Parameter => True, Switch => new Wide_String ' ("i"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Input_Text, 
	 Descr => new Wide_String ' ("input text"),
	 Param => new Wide_String ' ("Wide_String"),
	 Value => null),
      Name_Length => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("n"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Name_Length,
	 Descr => new Wide_String ' ("Name length max"),
	 Param => new Wide_String ' ("Name_Index_Type"),
	 Value => null),
      Unit_Max => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("u"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Unit_Max,
	 Descr => new Wide_String ' ("Units max"),
	 Param => new Wide_String ' ("Unit_Index_Type"),
	 Value => null),
      Object_Max => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("o"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Object_Max, 
	 Descr => new Wide_String ' ("Object max"),
	 Param => new Wide_String ' ("Object_index_type"),
	 Value => null),

      User_wait => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("W"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => User_Wait,
	 Descr => new Wide_String ' ("User wait"),
	 Param => new Wide_String ' ("Duration"),
	 Value => null),
      Human_Lang => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("l"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => Human_Lang, 
	 Descr => new Wide_String ' ("Human Language I18 abrev"),
	 Param => new Wide_String ' ("Human_Lang_Enum"),
	 Value => null),
      With_Gtk => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("g"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => With_Gtk, 
	 Descr => new Wide_String ' ("with GtkAda"),
	 Param => new Wide_String ' ("Boolean"),
	 Value => null),
      With_Ada => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("a"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => With_Ada, 
	 Descr => new Wide_String ' ("with Ada"),
	 Param => new Wide_String ' ("Boolean"),
	 Value => null),
      With_Aws => new Parameter_Record ' 
	(Requiered_Parameter => True, Switch => new Wide_String ' ("s"), Num_Iter => 0,
	 Is_Setted => False, Parameter_Flag => With_Aws, 
	 Descr => new Wide_String ' ("with AWS"),
	 Param => new Wide_String ' ("Boolean"),
	 Value => null)

	

     );


   type Parameters_Kit_Record is tagged
      record
	 Kit : Parameters_kit;
	 Name_Length : Name_Index_Type := 1024;
	 Unit_Max    : Unit_Index_Type := 1024;
	 With_Gtk : Boolean := False;
	 With_Ada : Boolean := False;
	 With_Aws : Boolean := False;
	 Char_Max	: char_index_type := 256;
	 Version        : version_index_type := 2016;
	 Objects_Max : Object_Index_Type := 65536;	 
	 Self_Programming	: boolean := False;
	 Self_Executed		: boolean := False;	 
	 Self_Wait : Duration := 0.00005;
	 User_Wait : Duration := 86400.0;
	 Human_Lang : Human_Lang_Enum := Human_Lang_Enum'First;
      end record;

end M.Parameters ;