[31m-- aish is another attempt of A. i. written with Ada.[m
[31m-- Aish is Copyright (C) 2024 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 := "2024-04-29 20:25:34"[m
[31m-- Version := "1.1.0r"[m
[01;34mwith[m Ada[31m.[mWide_Text_Io[31m;[m
[01;34mwith[m Ada[31m.[mText_Io[31m;[m
[01;34muse[m Ada[31m;[m
[01;34mwith[m Ada[31m.[mCharacters[31m.[mHandling[31m;[m
[01;34muse[m Ada[31m.[mCharacters[31m;[m
[01;34mwith[m Gnat[31m.[mCommand_Line[31m;[m
[01;34muse[m Gnat[31m;[m
[01;34mwith[m Ai[31m.[mVersions[31m.[mVersion_Io[31m;[m
[01;34mwith[m Gnat[31m.[mOs_Lib[31m;[m
[01;34muse[m Gnat[31m.[mOs_Lib[31m;[m
[01;34mpackage[m [01;34mbody[m Ai[31m.[mInterfaces [01;34mis[m
   [01;34mfunction[m Get_Parameter
     [31m([mFrom [31m:[m [01;34min[m Interface_Record[31m;[m
      Flag [31m:[m [01;34min[m Flag_Enum[31m)[m
     [01;34mreturn[m Parameters[31m.[mParameter_Record [01;34mis[m
      
   [01;34mbegin[m
      [01;34mreturn[m From[31m.[m[01;30mKit_Parameters[m[31m([mFlag[31m).[m[01;34mall[m[31m;[m
   [01;34mend[m Get_Parameter[31m;[m
   
   
   [01;34mprocedure[m [01;30mPrint_Parameters[m [31m([mInterf [31m:[m [01;34min[m Interface_Record'class[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mfor[m Option_Flag [01;34min[m Flag_Enum'[01;34mrange[m [01;34mloop[m	 
	 [01;34mcase[m Option_Flag [01;34mis[m	    
	    [01;34mwhen[m None [31m=>[m
	       [01;34mnull[m[31m;[m
	    [01;34mwhen[m [01;34mothers[m [31m=>[m	       
	       [01;34mif[m Interf[31m.[m[01;30mKit_Parameters[m[31m([mFlag_Enum[31m'Value(Flag_Enum'[m[01;30mImage[m[31m([mOption_Flag[31m))).[mIs_Setted [01;34mand[m		 
		 Interf[31m.[m[01;30mKit_Parameters[m[31m([mFlag_Enum[31m'Value(Flag_Enum'[m[01;30mImage[m[31m([mOption_Flag[31m))).[mRequiered_Parameter [01;34mthen[m
		  [01;34mdeclare[m
		     Parameter [31m:[m [01;34mconstant[m [32mWide_String[m [31m:=[m 
		       Interf[31m.[mKit_Parameters
		       [31m([mFlag_Enum[31m'Val(Flag_Enum'[m[01;30mPos[m[31m([mFlag_Enum[31m'Value(Flag_Enum'[m[01;30mImage[m[31m([mOption_Flag[31m))))).[mValue[31m.[m[01;34mall[m[31m;[m
		  [01;34mbegin[m
		     Wide_Text_Io[31m.[mPut_Line
		       [31m([mHandling[31m.[mTo_Wide_String
			  [31m([m
			   Flag_Enum[31m'Image(Flag_Enum'[m[01;30mValue[m[31m([mFlag_Enum'[01;30mImage[m[31m([mOption_Flag[31m))))[m [31m&[m
			  [31m" setted with parameter : "[m [31m&[m 
			  [31m""[m [31m&[m Parameter [31m&[m [31m""[m [31m&[m [31m" ; "[m[31m);[m
		  [01;34mend[m[31m;[m
	       [01;34melsif[m  Interf[31m.[m[01;30mKit_Parameters[m[31m([mFlag_Enum[31m'Value(Flag_Enum'[m[01;30mImage[m[31m([mOption_Flag[31m))).[mIs_Setted [01;34mthen[m		  
		  Wide_Text_Io[31m.[mPut_Line
		    [31m([mHandling[31m.[m[01;30mTo_Wide_String[m[31m([mFlag_Enum[31m'Image(Flag_Enum'[m[01;30mValue[m[31m([mFlag_Enum'[01;30mImage[m[31m([mOption_Flag[31m))))[m [31m&[m
		       [31m" setted without parameter."[m[31m);[m		  
	       [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mend[m [01;34mcase[m[31m;[m
	 
      [01;34mend[m [01;34mloop[m[31m;[m
   [01;34mend[m Print_Parameters[31m;[m
   
   
   [01;34mprocedure[m Parameters_Descriptions
     [31m([mFrom [31m:[m [01;34min[m Interface_Record[31m)[m [01;34mis[m
   [01;34mbegin[m
      Wide_Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Help: aish [ Options [ Parameters ] ]"[m[31m);[m
      Wide_Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Help: Options : "[m[31m);[m
      [01;34mfor[m Parameter_Flag [01;34min[m Config_Filename[31m..[mFlag_Enum'Last [01;34mloop[m
	 [01;34mdeclare[m
	    Parameter [31m:[m [01;34mconstant[m Parameters[31m.[mParameter_Record [31m:=[m
	      [01;30mGet_Parameter[m[31m([mFrom[31m,[m Parameter_flag[31m);[m
	 [01;34mbegin[m	    
	    [01;34mif[m Parameter[31m.[mSwitch [31m/=[m [01;34mnull[m [01;34mthen[m
	       Wide_Text_Io[31m.[m[01;30mPut[m[31m([m[31m'-'[m [31m&[m Parameter[31m.[mSwitch[31m.[m[01;34mall[m [31m&[m [31m" : "[m[31m);[m
	    [01;34mend[m [01;34mif[m[31m;[m
	    [01;34mif[m Parameter[31m.[mDescr [31m/=[m [01;34mnull[m [01;34mthen[m
	       Wide_Text_Io[31m.[m[01;30mPut[m[31m([mParameter[31m.[mDescr[31m.[m[01;34mall[m [31m&[m [31m" => "[m[31m);[m
	    [01;34mend[m [01;34mif[m[31m;[m
	    [01;34mif[m Parameter[31m.[mRequiered_Parameter [01;34mthen[m
	      [01;34mif[m Parameter[31m.[mparam [31m/=[m [01;34mnull[m [01;34mthen[m
	       Wide_Text_Io[31m.[m[01;30mPut[m[31m([mParameter[31m.[mParam[31m.[m[01;34mall[m[31m);[m
	      [01;34mend[m [01;34mif[m[31m;[m
	    [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mend[m[31m;[m
	 Wide_Text_Io[31m.[mNew_Line[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
      
   [01;34mend[m Parameters_Descriptions[31m;[m


   [01;34mprocedure[m [01;30mInitialize[m [31m([mMain_Interface [31m:[m [01;34min[m [01;34mout[m Interface_Record'Class[31m)[m [01;34mis[m
      Kit_Options [31m:[m [01;34maccess[m Options[31m.[mOptions_Kit[31m;[m	   
   [01;34mbegin[m
      Kit_Options [31m:=[m [01;34mnew[m Options[31m.[mOptions_Kit ' [31m([mOptions[31m.[mGet_Options_From_Command_Line[31m);[m
      
      [01;34mcase[m [01;30mKit_Options[m[31m([mConfig_Filename[31m).[mIs_Setted [01;34mis[m
	 [01;34mwhen[m False [31m=>[m
	    [01;34mif[m [01;30mIs_Regular_File[m[31m([m[31m".config_file"[m[31m)[m [01;34mthen[m
	       Main_Interface[31m.[mKit_Parameters [31m:=[m [01;30mSet_Parameters_from[m[31m([m[31m".config_file"[m[31m).[m[01;34mall[m[31m;[m
	    [01;34melse[m
	       Main_Interface[31m.[mKit_Parameters [31m:=[m Parameters[31m.[mLine_Parameters[31m;[m
	    [01;34mend[m [01;34mif[m[31m;[m
	    
	 [01;34mwhen[m True [31m=>[m
	    
	    Main_Interface[31m.[mKit_Parameters [31m:=[m [01;30mSet_Parameters_from[m[31m([m[01;30mKit_Options[m[31m([mConfig_Filename[31m).[mValue[31m.[m[01;34mall[m[31m).[m[01;34mall[m[31m;[m
      [01;34mend[m [01;34mcase[m[31m;[m
      
      [01;34mdeclare[m
	 Kit_Parameters [31m:[m Parameters[31m.[mParameters_Kit [31m:=[m Parameters[31m.[mLine_Parameters[31m;[m
      [01;34mbegin[m
	 
	 [01;30mSet_Parameters[m[31m([mKit_Parameters[31m,[m Kit_Options[31m.[m[01;34mall[m[31m);[m
	 
	 [01;34mfor[m Parameter_Id [01;34min[m Flag_Enum[31m'Val(1) .. Flag_Enum'[mLast [01;34mloop[m
	    [01;34mif[m [01;30mKit_Parameters[m[31m([mParameter_Id[31m).[mIs_Setted [01;34mthen[m
	       Main_Interface[31m.[m[01;30mKit_Parameters[m[31m([mParameter_Id[31m).[m[01;34mall[m [31m:=[m 
		 [01;30mKit_Parameters[m[31m([mParameter_Id[31m).[m[01;34mall[m[31m;[m
	    [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mend[m [01;34mloop[m[31m;[m
	 
      [01;34mend[m[31m;[m
   [01;34mexception[m      
      [01;34mwhen[m Command_Line[31m.[mInvalid_Parameter [31m=>[m
	 Wide_Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Exception in initialization of Main_Interface."[m[31m);[m
	 [01;34mraise[m[31m;[m	 
      [01;34mwhen[m [01;34mothers[m [31m=>[m
	 Wide_Text_Io[31m.[m[01;30mPut_Line[m[31m([m[31m"Other error in initialization of Main_Interface."[m[31m);[m
	 [01;34mraise[m[31m;[m
   [01;34mend[m Initialize[31m;[m
   

   [01;34mprocedure[m Set_Parameters
     [31m([mKit_Parameters [31m:[m [01;34mout[m Parameters[31m.[mParameters_Kit[31m;[m			    
      Kit_Options [31m:[m [01;34min[m Options[31m.[mOptions_Kit[31m)[m [01;34mis[m
   [01;34mbegin[m
      [01;34mfor[m Option_Flag [01;34min[m Flag_Enum'[01;34mrange[m [01;34mloop[m
	 
	 [01;34mcase[m Option_Flag [01;34mis[m
	    
	    [01;34mwhen[m none [31m=>[m
	       
	       [01;34mnull[m[31m;[m
	    [01;34mwhen[m [01;34mothers[m [31m=>[m
	       
	       Kit_Parameters
		 
		 [31m([m
		  
		  Flag_Enum'Val
		    
		    [31m([m
		     
		     Flag_Enum'[01;30mPos[m[31m([mOption_Flag[31m)[m
		       
		    [31m)[m
		    
		 [31m).[mIs_Setted [31m:=[m 
		 
		 [01;30mKit_Options[m[31m([mOption_Flag[31m).[mIs_Setted[31m;[m
	       
	       
	       [01;34mif[m [01;30mKit_Options[m[31m([mOption_Flag[31m).[mIs_Setted [01;34mthen[m
		  [01;34mcase[m Option_Flag [01;34mis[m
		     [01;34mwhen[m [01;34mothers[m [31m=>[m
			[01;34mnull[m[31m;[m
		  [01;34mend[m [01;34mcase[m[31m;[m
	       [01;34mend[m [01;34mif[m[31m;[m
	       
	       [01;34mif[m [01;30mKit_Options[m[31m([mOption_Flag[31m).[mIs_Setted [01;34mand[m
		 
		 [01;30mKit_Options[m[31m([mOption_Flag[31m).[mRequiered_Parameter  [01;34mthen[m
		  
		  Kit_Parameters
		    
		    [31m([m
		     
		     Flag_Enum'Val
		       
		       [31m([m
			
			Flag_Enum'[01;30mPos[m[31m([mOption_Flag[31m)[m
			  
		       [31m)[m
		       
		    [31m).[mValue [31m:=[m
		    
		    [01;34mnew[m [32mWide_String[m ' 
		    
		    [31m([m
		     
		     [01;30mKit_Options[m[31m([mOption_Flag[31m).[mValue[31m.[m[01;34mall[m
		       
		    [31m);[m
	       [01;34mend[m [01;34mif[m[31m;[m
	       
	 [01;34mend[m [01;34mcase[m[31m;[m
	 
      [01;34mend[m [01;34mloop[m[31m;[m

   [01;34mend[m Set_Parameters[31m;[m
   
   [01;34mfunction[m Set_Parameters_From
     
     [31m([mFilename [31m:[m [01;34min[m [32mWide_String[m[31m)[m 
     
     [01;34mreturn[m [01;34maccess[m Parameters[31m.[mParameters_Kit [01;34mis[m

      Kit_Parameters [31m:[m [01;34mconstant[m [01;34maccess[m Parameters[31m.[mParameters_Kit [31m:=[m
   	[01;34mnew[m Parameters[31m.[mParameters_Kit ' 
	[31m([mParameters[31m.[mFile_Parameters[31m);[m
      [31m--(All_Parameters => Set_Parameters_From(Get_Options_From_File(Filename)).All_parameters);[m
      
      Kit_Options [31m:[m [01;34maccess[m Options[31m.[mOptions_Kit[31m;[m	   
                  
   [01;34mbegin[m
      Kit_Options [31m:=[m [01;34mnew[m Options[31m.[mOptions_Kit ' [31m([mOptions[31m.[m[01;30mGet_Options_From_File[m[31m([mfilename[31m));[m      
      [01;30mSet_Parameters[m[31m([mKit_Parameters[31m.[m[01;34mall[m[31m,[m Kit_Options[31m.[m[01;34mAll[m[31m);[m
      [01;34mreturn[m Kit_Parameters[31m;[m

      
   [01;34mend[m Set_Parameters_From[31m;[m

[01;34mend[m Ai[31m.[mInterfaces [31m;[m 
