[31m-- Skywalker is another attempt of A. i. written with Ada.[m
[31m-- Skywalker 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-11-12 09:20:39"[m
[31m-- Version := "0.0.8r"[m
[01;34mwith[m Ada[31m.[mText_Io[31m;[m
[01;34muse[m Ada[31m.[mText_Io[31m;[m
[01;34mwith[m Gnat[31m.[mOs_Lib[31m;[m
[01;34muse[m Gnat[31m.[mOs_Lib[31m;[m

[01;34mwith[m Ada[31m.[mStrings[31m.[mFixed[31m;[m
[01;34muse[m Ada[31m.[mStrings[31m.[mFixed[31m;[m
[01;34mwith[m Gnat[31m.[mDirectory_Operations[31m;[m
[01;34muse[m Gnat[31m.[mDirectory_Operations[31m;[m

[01;34mpackage[m [01;34mbody[m Sky[31m.[mProjects_manager [01;34mis[m
   
      [01;34mprocedure[m [01;30mManager_Load[m [31m([mProjects [31m:[m [01;34mout[m Projects_Record[31m;[m Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mis[m
      File [31m:[m File_Type[31m;[m
      Project [31m:[m Project_Access[31m;[m
   [01;34mbegin[m

      [01;34mif[m [01;34mnot[m [01;30mIs_Regular_File[m[31m([mFilename[31m)[m [01;34mthen[m
	 [01;34mreturn[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      
      [01;30mOpen[m[31m([mFile[31m,[m In_File[31m,[m Filename[31m);[m
      Projects[31m.[mProjects_Num [31m:=[m [35m0[m[31m;[m
      [01;34mwhile[m [01;34mnot[m [01;30mEnd_Of_File[m[31m([mFile[31m)[m [01;34mloop[m
	 
	 [01;34mdeclare[m
	    
	    Project_Name [31m:[m [01;34mconstant[m [32mString[m [31m:=[m [01;30mGet_Line[m[31m([mFile[31m);[m
	    Img [31m:[m [01;34mconstant[m [32mString[m [31m:=[m [01;30mProject_Name[m[31m([m[01;30mIndex[m[31m([mProject_Name[31m,[m [31m" "[m[31m)+[m[35m1[m[31m..[mProject_Name'Last[31m);[m
	    String_Long_Float [31m:[m [01;34mconstant[m [32mString[m[31m([m[35m1[m[31m..[mImg'Length[31m)[m [31m:=[m Img[31m;[m
	    Elapsed_Long_Float [31m:[m [01;34mconstant[m Long_Long_Float [31m:=[m [31m([mLong_Long_Float'[01;30mValue[m[31m([mString_Long_Float[31m));[m
	    Days         [31m:[m [01;34mconstant[m Natural [31m:=[m [01;30mNatural[m[31m([mElapsed_Long_Float [31m/[m [35m86400.0[m[31m);[m
	    
	    Elapsed [31m:[m [32mDuration[m [31m:=[m [35m0.0[m[31m;[m
	 [01;34mbegin[m	    

	    Elapsed [31m:=[m [32mDuration[m[31m([mElapsed_Long_Float [31m-[m [31m([m[01;30mLong_Long_Float[m[31m([mDays[31m)[m [31m*[m [35m86400.0[m[31m));[m
	    
	    [01;30mRead[m[31m([mProject[31m,[m 
		 [01;30mProject_Name[m[31m([m[35m1[m[31m..[m[01;30mIndex[m[31m([mProject_Name[31m,[m [31m" "[m[31m)-[m[35m1[m[31m));[m

	    [01;34mif[m Project [31m/=[m [01;34mnull[m [01;34mthen[m

	       Project[31m.[mDays [31m:=[m Days[31m;[m
	       Project[31m.[mElapsed [31m:=[m Elapsed[31m;[m
	       Project[31m.[mProject_Num [31m:=[m Projects[31m.[mProjects_Num [31m+[m [35m1[m[31m;[m
	       Projects[31m.[mProjects_Num [31m:=[m Projects[31m.[mProjects_Num [31m+[m [35m1[m[31m;[m
	       [01;30mAppend[m[31m([mProjects[31m.[mList[31m,[m Project[31m);[m
	    [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mend[m[31m;[m

      [01;34mend[m [01;34mloop[m[31m;[m
      New_Line[31m;[m
      [01;30mClose[m[31m([mFile[31m);[m

   [01;34mend[m Manager_Load[31m;[m
   
   [01;34mprocedure[m [01;30mManager_Save[m [31m([mProjects [31m:[m [01;34min[m Projects_Record[31m;[m Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mis[m
      File [31m:[m File_Type[31m;[m
      Curs [31m:[m Projects_Dll[31m.[mCursor[31m;[m

   [01;34mbegin[m
      
      [01;34mif[m Projects_Dll[31m.[m[01;30mLength[m[31m([mProjects[31m.[mList[31m)[m [31m/=[m [35m0[m [01;34mthen[m
	 [01;30mCreate[m[31m([mFile[31m,[m Out_File[31m,[m Filename[31m);[m
	 Curs [31m:=[m Projects_Dll[31m.[m[01;30mFirst[m[31m([mProjects[31m.[mList[31m);[m
	 [01;34mfor[m Cur [01;34min[m [35m1[m[31m..[mProjects_Dll[31m.[m[01;30mLength[m[31m([mProjects[31m.[mList[31m)[m [01;34mloop[m

	    [01;34mdeclare[m
	       
	       Project [31m:[m [01;34mconstant[m Project_Access [31m:=[m Projects_Dll[31m.[m[01;30mElement[m[31m([mCurs[31m);[m	       
	    [01;34mbegin[m
	       
	       [01;34mif[m Project [31m/=[m [01;34mnull[m [01;34mthen[m
		  [31m--Put_Line(Project.Project_Name.all & Versions.Version_Io.To_String(Project.Version));[m
		  [01;30mSave[m[31m([mProject[31m.[m[01;34mall[m[31m,[m file[31m);[m
	       [01;34mend[m [01;34mif[m[31m;[m
	    [01;34mend[m[31m;[m
	    Curs [31m:=[m Projects_Dll[31m.[m[01;30mNext[m[31m([mCurs[31m);[m
	    
	 [01;34mend[m [01;34mloop[m[31m;[m
	 [01;30mClose[m[31m([mFile[31m);[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m Manager_Save[31m;[m
   
   [01;34mprocedure[m [01;30mArchives_Load[m [31m([mProjects [31m:[m [01;34mout[m Projects_Record[31m;[m Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mis[m
      File [31m:[m File_Type[31m;[m
      Project [31m:[m Project_Access[31m;[m
   [01;34mbegin[m

      [01;34mif[m [01;34mnot[m [01;30mIs_Regular_File[m[31m([mFilename[31m)[m [01;34mthen[m
	 [01;34mreturn[m[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m

      [01;30mOpen[m[31m([mFile[31m,[m In_File[31m,[m Filename[31m);[m
      Projects[31m.[mProjects_Num [31m:=[m [35m0[m[31m;[m
      [01;34mwhile[m [01;34mnot[m [01;30mEnd_Of_File[m[31m([mFile[31m)[m [01;34mloop[m
	 
	 [01;34mdeclare[m
	    
	    Project_Name [31m:[m [01;34mconstant[m [32mString[m [31m:=[m [01;30mGet_Line[m[31m([mFile[31m);[m
	    Img [31m:[m [01;34mconstant[m [32mString[m [31m:=[m [01;30mProject_Name[m[31m([m[01;30mIndex[m[31m([mProject_Name[31m,[m [31m" "[m[31m)+[m[35m1[m[31m..[mProject_Name'Last[31m);[m
	    String_Long_Float [31m:[m [01;34mconstant[m [32mString[m[31m([m[35m1[m[31m..[mImg'Length[31m)[m [31m:=[m Img[31m;[m
	    Elapsed_Long_Float [31m:[m Long_Float [31m:=[m [31m([mLong_Float'[01;30mValue[m[31m([mString_Long_Float[31m));[m
	    Days         [31m:[m Natural [31m:=[m [01;30mNatural[m[31m([mElapsed_Long_Float [31m/[m [35m86400.0[m[31m);[m
	    
	    Elapsed [31m:[m [32mDuration[m [31m:=[m [35m0.0[m[31m;[m
	 [01;34mbegin[m	    
	    
	    Elapsed [31m:=[m [32mDuration[m[31m([mElapsed_Long_Float [31m-[m [31m([m[01;30mLong_Float[m[31m([mDays[31m)[m [31m*[m [35m86400.0[m[31m));[m
	    
	    [01;30mRead[m[31m([mProject[31m,[m 
		 [01;30mDir_Name[m[31m([mFilename[31m)[m [31m&[m [01;30mProject_Name[m[31m([m[35m1[m[31m..[m[01;30mIndex[m[31m([mProject_Name[31m,[m [31m" "[m[31m)-[m[35m1[m[31m));[m
	    
	    [01;34mif[m Project [31m/=[m [01;34mnull[m [01;34mthen[m
	       Project[31m.[mDays [31m:=[m Days[31m;[m
	       Project[31m.[mElapsed [31m:=[m Elapsed[31m;[m
	       Project[31m.[mProject_Num [31m:=[m Projects[31m.[mProjects_Num [31m+[m [35m1[m[31m;[m
	       Projects[31m.[mProjects_Num [31m:=[m Projects[31m.[mProjects_Num [31m+[m [35m1[m[31m;[m
	       [01;30mAppend[m[31m([mProjects[31m.[mList[31m,[m Project[31m);[m
	    [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mend[m[31m;[m

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

      [01;30mClose[m[31m([mFile[31m);[m
      
   [01;34mend[m Archives_Load[31m;[m
   
   [01;34mprocedure[m [01;30mArchives_Save[m [31m([mProjects [31m:[m [01;34min[m Projects_Record[31m;[m Filename [31m:[m [01;34min[m [32mString[m[31m)[m [01;34mis[m
      File [31m:[m File_Type[31m;[m
      Curs [31m:[m Projects_Dll[31m.[mCursor[31m;[m

   [01;34mbegin[m
      
      [01;34mif[m Projects_Dll[31m.[m[01;30mLength[m[31m([mProjects[31m.[mList[31m)[m [31m/=[m [35m0[m [01;34mthen[m
	 [01;30mCreate[m[31m([mFile[31m,[m Out_File[31m,[m Filename[31m);[m
	 Curs [31m:=[m Projects_Dll[31m.[m[01;30mFirst[m[31m([mProjects[31m.[mList[31m);[m
	 [01;34mfor[m Cur [01;34min[m [35m1[m[31m..[mProjects_Dll[31m.[m[01;30mLength[m[31m([mProjects[31m.[mList[31m)[m [01;34mloop[m

	    [01;34mdeclare[m
	       
	       Project [31m:[m [01;34mconstant[m Project_Access [31m:=[m Projects_Dll[31m.[m[01;30mElement[m[31m([mCurs[31m);[m	       
	    [01;34mbegin[m
	       
	       [01;34mif[m Project [31m/=[m [01;34mnull[m [01;34mthen[m
		  [01;30mSave[m[31m([mProject[31m.[m[01;34mall[m[31m,[m file[31m);[m
	       [01;34mend[m [01;34mif[m[31m;[m
	    [01;34mend[m[31m;[m
	    Curs [31m:=[m Projects_Dll[31m.[m[01;30mNext[m[31m([mCurs[31m);[m
	    
	 [01;34mend[m [01;34mloop[m[31m;[m
	 [01;30mClose[m[31m([mFile[31m);[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m Archives_Save[31m;[m

[01;34mend[m Sky[31m.[mProjects_manager [31m;[m 
