[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 := "2025-06-04 18:32:28"[m
[31m-- Version := "0.0.0r"[m
[01;34mwith[m Ada[31m.[mText_Io[31m;[m
[01;34muse[m Ada[31m.[mText_Io[31m;[m
[01;34mwith[m Ada[31m.[mCalendar[31m.[mFormatting[31m;[m

[01;34mpackage[m [01;34mbody[m M[31m.[mLogs [01;34mis[m
   [01;34mprocedure[m [01;30mOpen[m [31m([mSession [31m:[m [01;34min[m [01;34mout[m Session_Record[31m)[m [01;34mis[m
   [01;34mbegin[m
      Session[31m.[mTop [31m:=[m Clock[31m;[m      
   [01;34mend[m Open[31m;[m
     
   [01;34mprocedure[m [01;30mClose[m [31m([mSession [31m:[m [01;34min[m [01;34mout[m Session_Record[31m)[m [01;34mis[m
   [01;34mbegin[m

      Session[31m.[mBot [31m:=[m Clock[31m;[m      
   [01;34mend[m Close[31m;[m
   
   Total [31m:[m Long_Long_Float [31m:=[m [35m0.0[m[31m;[m
   
   [01;34mprocedure[m [01;30mStatistic[m [31m([mSessions [31m:[m [01;34min[m [01;34mout[m Session_Array[31m;[m Logs [31m:[m [01;34min[m [01;34mout[m Log_Array[31m)[m [01;34mis[m
      
      Sum [31m:[m Long_Long_Float [31m:=[m [35m0.0[m[31m;[m
   [01;34mbegin[m
      
	[01;34mfor[m Session [01;34min[m Sessions'[01;34mRange[m [01;34mloop[m
	   
	  [01;34mif[m [01;30mSessions[m[31m([mSession[31m).[mBot [31m>[m [01;30mSessions[m[31m([mSession[31m).[mTop [01;34mthen[m

	    [01;34mdeclare[m
	       Elapsed [31m:[m [01;34mconstant[m [32mDuration[m [31m:=[m [01;30mSessions[m[31m([mSession[31m).[mBot [31m-[m [01;30mSessions[m[31m([mSession[31m).[mTop[31m;[m
	    [01;34mbegin[m
	       
	       
	       [01;34mif[m Elapsed [31m>[m [35m0.0[m [01;34mthen[m
		  
		  [01;30mLogs[m[31m([mSession[31m).[mTotal [31m:=[m [01;30mLogs[m[31m([mSession[31m).[mTotal [31m+[m [01;30mLong_Long_Float[m[31m([mElapsed[31m);[m
		  
		  
		  
		  [01;30mSessions[m[31m([mSession[31m).[mTop [31m:=[m [01;30mTime_Of[m[31m([m[35m2399[m[31m,[m [35m12[m[31m,[m [35m31[m[31m,[m [35m86399.99[m[31m);[m
		  
	       [01;34mend[m [01;34mif[m[31m;[m
	    [01;34mend[m[31m;[m
	 [01;34mend[m [01;34mif[m[31m;[m
	[01;34mend[m [01;34mloop[m[31m;[m
	Total [31m:=[m [35m0.0[m[31m;[m
	[01;34mfor[m Session [01;34min[m Sessions'[01;34mRange[m [01;34mloop[m
	   Total [31m:=[m Total [31m+[m [01;30mLogs[m[31m([mSession[31m).[mTotal[31m;[m
	[01;34mend[m [01;34mloop[m[31m;[m
	[01;34mif[m Total [31m>[m [35m0.0[m [01;34mthen[m
	   
	   [01;34mfor[m Log [01;34min[m Logs'[01;34mRange[m [01;34mloop[m
	      
	      [01;34mif[m [01;30mLogs[m[31m([mLog[31m).[mTotal [31m>=[m [35m1.0[m [01;34mthen[m
		 
		 Sum [31m:=[m [01;30mLogs[m[31m([mLog[31m).[mTotal [31m/[m Total[31m;[m
		 
		 [01;30mLogs[m[31m([mLog[31m).[mRate [31m:=[m [01;30mRate_Type[m[31m([mSum [31m*[m [35m100.0[m[31m);[m
		 
	      [01;34melse[m
		 [01;30mLogs[m[31m([mLog[31m).[mRate [31m:=[m [35m0.0[m[31m;[m
	      [01;34mend[m [01;34mif[m[31m;[m
	   [01;34mend[m [01;34mloop[m[31m;[m      
	[01;34mend[m [01;34mif[m[31m;[m

   [01;34mend[m Statistic[31m;[m
   
   [01;34mprocedure[m [01;30mSave[m [31m([mLogs [31m:[m [01;34min[m Log_Array[31m;[m Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mis[m
      File [31m:[m File_Type[31m;[m
   [01;34mbegin[m
      [01;34mbegin[m
	 [01;30mOpen[m[31m([mFile[31m,[m Out_File[31m,[m Filename[31m);[m
      [01;34mexception[m
	 [01;34mwhen[m [01;34mothers[m [31m=>[m
	    [01;30mCreate[m[31m([mFile[31m,[m Out_File[31m,[m Filename[31m);[m
      [01;34mend[m[31m;[m
      [01;34mfor[m log [01;34min[m Logs'[01;34mRange[m [01;34mloop[m
	 [01;30mPut_Line[m[31m([mFile[31m,[m Long_Long_Float'[01;30mImage[m[31m([m[01;30mLogs[m[31m([mLog[31m).[mTotal[31m));[m
	 [01;30mPut_Line[m[31m([mFile[31m,[m Rate_Type'[01;30mImage[m[31m([m[01;30mLogs[m[31m([mLog[31m).[mRate[31m));[m
      [01;34mend[m [01;34mloop[m[31m;[m
      [01;30mClose[m[31m([mFile[31m);[m
   [01;34mend[m Save[31m;[m
      
      
   [01;34mprocedure[m [01;30mRestore[m [31m([mLogs [31m:[m [01;34mout[m Log_Array[31m;[m Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mis[m
      File [31m:[m File_Type[31m;[m
   [01;34mbegin[m
      Total [31m:=[m [35m0.0[m[31m;[m
      [01;30mOpen[m[31m([mFile[31m,[m In_File[31m,[m Filename[31m);[m
      [01;34mfor[m Log [01;34min[m Logs'[01;34mRange[m [01;34mloop[m
	 [01;34mif[m [01;34mnot[m [01;30mEnd_Of_File[m[31m([mFile[31m)[m [01;34mthen[m
	    [01;30mLogs[m[31m([mLog[31m).[mTotal [31m:=[m Long_Long_Float'[01;30mValue[m[31m([m[01;30mGet_Line[m[31m([mFile[31m));[m
	    [01;30mLogs[m[31m([mLog[31m).[mRate [31m:=[m Rate_Type'[01;30mValue[m[31m([m[01;30mGet_Line[m[31m([mFile[31m));[m
	    Total [31m:=[m Total [31m+[m [01;30mLogs[m[31m([mLog[31m).[mTotal[31m;[m
	 [01;34mend[m [01;34mif[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
      [01;30mClose[m[31m([mFile[31m);[m
   [01;34mend[m Restore[31m;[m

[01;34mend[m M[31m.[mLogs [31m;[m 
