-------------------------------------------------------------------------------------------------------------------------------------------------------------- -- Gnostic is Ada Generic Neural Object System Engineering. -- -- Gnostic (C) Copyright 2016 Manuel De Girardi. -- -------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------- -- Date := 2016-12-03 00:11:01 ;  -- Description : Ada Generic Neural Object System Engineering. -- -- Version := 2016.34.2a ;  -- Authors : Manuel De Girardi. -- -------------------------------------------------------------------------------------------------------------------------------------------------------------- with Ada.Wide_Text_Io; --with Ada.Text_Io; use Ada; with Gnat.Os_Lib; use Gnat.Os_Lib; with Gnat.Command_Line; use Gnat; with Ada.Characters.Handling; use Ada.Characters.Handling; with Gnos.Versions; with Gnos.Versions.Version_Io; use Gnos.Versions; package body Gnos.Parameters is procedure All_Parameters(All_Params : in out Gnose_Parameters_Type) is begin -- Text_Io.Put_Line("Human Lang"); if Get_Parameter(All_Params.Kit, Human_Lang).Is_Setted then All_Params.Human_Lang := Human_Lang_Enum'Value(To_String(Get_Parameter(All_Params.Kit, Human_Lang).Value.all)); end if; -- Text_Io.Put_Line("Self wait"); if Get_Parameter(All_Params.Kit, Self_Wait).Is_Setted then All_Params.Self_wait := Duration'Value(To_String(Get_Parameter(All_Params.Kit, Self_Wait).Value.all)); end if; -- Text_Io.Put_Line("user wait"); if Get_Parameter(All_Params.Kit, User_Wait).Is_Setted then All_Params.User_wait := Duration'Value(To_String(Get_Parameter(All_Params.Kit, User_Wait).Value.all)); end if; -- Text_Io.Put_Line("Programming"); if Get_Parameter(All_Params.Kit, Self_Programming).Is_Setted then All_Params.Self_programming := Boolean'Value(To_String(Get_Parameter(All_Params.Kit, Self_Programming).Value.all)); end if; -- Text_Io.Put_Line("Executed"); if Get_Parameter(All_Params.Kit, Self_Executed).Is_Setted then All_Params.Self_executed := Boolean'Value(To_String(Get_Parameter(All_Params.Kit, Self_Executed).Value.all)); end if; -- Text_Io.Put_Line("Objects max"); if Get_Parameter(All_Params.Kit, Object_Max).Is_Setted then All_Params.Objects_max := Object_Index_Type'Value(To_String(Get_Parameter(All_Params.Kit, Object_Max).Value.all)); end if; -- Text_Io.Put_Line("Char max"); if Get_Parameter(All_Params.Kit, Char_Max).Is_Setted then All_Params.Char_Max := Char_Index_type'Value(To_String(Get_Parameter(All_Params.Kit, Char_Max).Value.all)); end if; -- Text_Io.Put_Line("Version"); if Get_Parameter(All_Params.Kit, Version).Is_Setted then All_Params.Version := Version_Index_type'Value(To_String(Get_Parameter(All_Params.Kit, Version).Value.all)); end if; -- Text_Io.Put_Line("Name length"); if Get_Parameter(All_Params.Kit, Name_Length).Is_Setted then All_Params.Name_Length := Positive'Value(To_String(Get_Parameter(All_Params.Kit, Name_Length).Value.all)); end if; -- Text_Io.Put_Line("unit max"); if Get_Parameter(All_Params.Kit, Unit_Max).Is_Setted then All_Params.Unit_Max := Positive'Value(To_String(Get_Parameter(All_Params.Kit, Unit_Max).Value.all)); end if; -- Text_Io.Put_Line("Gtk"); if Get_Parameter(All_Params.Kit, With_Gtk).Is_Setted then All_Params.With_Gtk := Boolean'Value(To_String(Get_Parameter(All_Params.Kit, With_Gtk).Value.all)); end if; -- Text_Io.Put_Line("Ada"); if Get_Parameter(All_Params.Kit, With_Ada).Is_Setted then All_Params.With_Ada := Boolean'Value(To_String(Get_Parameter(All_Params.Kit, With_Ada).Value.all)); end if; -- Text_Io.Put_Line("Aws"); if Get_Parameter(All_Params.Kit, With_Aws).Is_Setted then All_Params.With_Aws := Boolean'Value(To_String(Get_Parameter(All_Params.Kit, With_Aws).Value.all)); end if; end All_Parameters; procedure Print_Parameters (Kit : in Parameters_Kit_Array_Type) is begin for Parameter_Flag in Parameters_Flags_Enum_Type'range loop case Parameter_Flag is when Null_Parameter => null; when others => if kit(Parameter_Flag).Is_Setted and kit(Parameter_Flag).Requiered_Parameter then declare Parameter : constant Wide_String := kit(Parameters_Flags_Enum_Type'Val(Parameters_Flags_Enum_Type'Pos(Parameter_Flag))).Value.all; begin Wide_Text_Io.Put_Line (To_Wide_String ( Parameters_Flags_Enum_Type'Image(Parameter_Flag)) & " setted with parameter : " & "" & Parameter & "" & " ; "); end; elsif kit(Parameter_Flag).Is_Setted then Wide_Text_Io.Put_Line (To_Wide_String(Parameters_Flags_Enum_Type'Image(Parameter_Flag)) & " setted without parameter."); end if; end case; end loop; end Print_Parameters; procedure Set_Parameters(The_Parameters : out Parameters_Kit_Record; Options_Kit : in Options_Kit_Array_Type) is begin ------------------------------------------------------------------ -- -- -- Initilaisation des parametres depuis les options. -- -- -- ------------------------------------------------------------------ for Option_Flag in Optionals_Flags_Enum_Type'range loop case Option_Flag is when Null_Option => null; when others => The_Parameters.kit ( Parameters_Flags_Enum_Type'Val ( Optionals_Flags_Enum_Type'Pos(Option_Flag) ) ).Is_Setted := Options_Kit(Option_Flag).Is_Setted; if Options_Kit(Option_Flag).Is_Setted and Options_Kit(Option_Flag).Requiered_Parameter then The_Parameters.Kit ( Parameters_Flags_Enum_Type'Val ( Optionals_Flags_Enum_Type'Pos(Option_Flag) ) ).Value := new Wide_String ' ( Options_Kit(Option_Flag).Value.all ); end if; end case; end loop; end Set_Parameters; function Set_Parameters_From (Filename : in Wide_String) return Parameters_Kit_Record is Parameters_Kit : Parameters_Kit_Record := (Kit => File_Parameters); Options_Kit : access Options_Kit_Array_Type; begin Options_Kit := new Options_Kit_Array_Type ' (Get_Options_From_File(filename)); Set_Parameters(Parameters_Kit, Options_Kit.All); return Parameters_Kit; end Set_Parameters_From; function Get_Parameter (From : in Parameters_Kit_Array_Type; Flag : in Parameters_Flags_Enum_Type) return Parameter_Tagged_Record_Type is begin return From(Flag).all; end Get_Parameter; procedure Parameters_Descriptions (From : in Parameters_Kit_Array_Type) is begin Wide_Text_Io.Put_Line("Help: gnostic [ Options [ Parameters ] ]"); Wide_Text_Io.Put_Line("Help: Options : "); for Parameter_Flag in Config_filename..Parameters_Flags_Enum_Type'Last loop declare Parameter : constant Parameter_Tagged_Record_Type := Get_Parameter(From, Parameter_flag); begin if Parameter.Switch /= null then Wide_Text_Io.Put('-' & Parameter.Switch.all & " : "); end if; if Parameter.Descr /= null then Wide_Text_Io.Put(Parameter.Descr.all & " => "); end if; if Parameter.Requiered_Parameter then if Parameter.param /= null then Wide_Text_Io.Put(Parameter.Param.all); end if; end if; end; Wide_Text_Io.New_Line; end loop; end Parameters_Descriptions; procedure initialize(Gnose_Parameters : in out Gnose_Parameters_Type; End_Of_Task : out boolean) is Options_Kit : access Options_Kit_Array_Type; Help_Parameter : Parameter_Tagged_Record_Type(False); begin End_Of_Task := False; begin Options_Kit := new Options_Kit_Array_Type ' (Get_Options_From_Command_Line); case Options_Kit(Config_Filename).Is_Setted is when False => if Is_Regular_File("Config_File.txt") then Gnose_Parameters.Kit := Set_Parameters_from("Config_File.txt").kit; else Gnose_Parameters.kit := File_Parameters; end if; when True => Parameters_Kit_Record(Gnose_Parameters) := Set_Parameters_from(Options_Kit(Config_Filename).Value.all); end case; declare All_Parameters_Kit : Parameters_Kit_Record := (Kit => Line_Parameters); begin Set_Parameters(All_Parameters_Kit, Options_Kit.all); for Parameter_Id in Parameters_Flags_Enum_Type'Val(1) ..Parameters_Flags_Enum_Type'last loop if All_Parameters_Kit.Kit(Parameter_Id).Is_Setted then Gnose_Parameters.Kit(Parameter_Id).all := All_Parameters_Kit.Kit(Parameter_Id).all; end if; end loop; end; All_Parameters(Gnose_Parameters); case Get_Parameter(Gnose_Parameters.kit, Version_Edition).Is_Setted is when False => null; when True => Wide_Text_Io.Put_Line(To_Wide_String(Gnos.Versions.Version_Io.To_String(Gnos.Versions.Version))); End_Of_Task := True; end case; Help_Parameter := Get_Parameter(Gnose_Parameters.kit, Help); if Help_Parameter.Is_Setted then Parameters_Descriptions(Gnose_Parameters.Kit); End_Of_Task := True; end if; exception when Command_Line.Invalid_Parameter => Wide_Text_Io.Put_Line("Exception in initialization of "); raise; when others => Wide_Text_Io.Put_Line("Exception in initialization of "); raise; end; end initialize; end Gnos.Parameters;