[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-11 16:46:44"[m
[31m-- Version := "0.0.0r"[m
[01;34mwith[m Ada[31m.[mStrings[31m.[mWide_Fixed[31m;[m
[01;34muse[m Ada[31m.[mStrings[31m;[m
[01;34mwith[m Ada[31m.[mWide_Text_Io[31m;[m
[01;34muse[m Ada[31m.[mWide_Text_Io[31m;[m
[01;34mpackage[m [01;34mbody[m M[31m.[mWopr [01;34mis[m
   
   [01;34mprocedure[m [01;30mIs_Valid[m [31m([mMessage [31m:[m [01;34mout[m Message_Type[31m;[m
		      Content [31m:[m [01;34min[m [32mWide_String[m[31m)[m [01;34mis[m
      
      Last [31m:[m Natural [31m:=[m [35m0[m[31m;[m
      
   [01;34mbegin[m
      
      Last [31m:=[m Wide_Fixed[31m.[m[01;30mIndex[m[31m([mContent[31m,[m [31m"onjour"[m[31m);[m
      [01;34mif[m Last [31m/=[m [35m0[m [01;34mthen[m
	 Message[31m.[mLANG [31m:=[m EU[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      Last [31m:=[m Wide_Fixed[31m.[m[01;30mIndex[m[31m([mContent[31m,[m [31m"ardonne"[m[31m);[m
      [01;34mif[m Last [31m/=[m [35m0[m [01;34mthen[m
	 Message[31m.[mNation [31m:=[m UN[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      
      Last [31m:=[m Wide_Fixed[31m.[m[01;30mIndex[m[31m([mContent[31m,[m [31m"M."[m[31m);[m
      [01;34mif[m Last [31m/=[m [35m0[m [01;34mthen[m
	 Message[31m.[mNation [31m:=[m EST[31m;[m
	 Message[31m.[mLANG [31m:=[m none[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      
      Last [31m:=[m Wide_Fixed[31m.[m[01;30mIndex[m[31m([mContent[31m,[m [31m"Mr"[m[31m);[m
      [01;34mif[m Last [31m/=[m [35m0[m [01;34mthen[m
	 Message[31m.[mNation [31m:=[m EST[31m;[m
	 Message[31m.[mLANG [31m:=[m none[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
      
      
      [01;34mif[m Message[31m.[mLANG [31m=[m None [01;34mand[m Message[31m.[mNation [31m=[m None [01;34mthen[m
	 Message[31m.[mValid [31m:=[m False[31m;[m
      [01;34melsif[m Message[31m.[mLANG [31m=[m None [01;34mand[m Message[31m.[mNation [31m=[m EST [01;34mthen[m
	 Message[31m.[mValid [31m:=[m False[31m;[m
      [01;34melse[m
	 Message[31m.[mValid [31m:=[m True[31m;[m
      [01;34mend[m [01;34mif[m[31m;[m
   [01;34mend[m Is_Valid[31m;[m
   
   
   [01;34mtask[m [01;34mbody[m Message_Box [01;34mis[m
   [01;34mbegin[m
      [01;34mloop[m
	 [01;34mselect[m
	    [01;34maccept[m Initialize[31m;[m
	 [01;34mor[m
	    [01;34maccept[m [01;30mReceive[m[31m([mFrom [31m:[m [01;34min[m User_Record[31m;[mDest [31m:[m [01;34min[m User_Record[31m;[mMsg [31m:[m [01;34min[m [32mWide_String[m[31m)[m [01;34mdo[m
	       [01;34mdeclare[m
		  Message [31m:[m Message_Type [31m:=[m [31m([mNone[31m,[m None[31m,[m false[31m);[m
	       [01;34mbegin[m
		  WOPR[31m.[m[01;30mGet_Message[m[31m([mMsg[31m,[m Message[31m);[m
		  [01;34mif[m Message[31m.[mValid [01;34mthen[m
		     [31m-- add[m
		     [01;34mnull[m[31m;[m
		  [01;34mend[m [01;34mif[m[31m;[m
	       [01;34mend[m[31m;[m
	    [01;34mend[m Receive[31m;[m
	      
	 [01;34mor[m
	    [01;34maccept[m [01;30mGet[m[31m([mUser [31m:[m [01;34min[m User_Record[31m;[mBox [31m:[m [01;34min[m [01;34mout[m Wide_String_Set[31m);[m
	 [01;34mor[m
	    [01;34maccept[m Halt[31m;[m
	    [01;34mexit[m[31m;[m
	 [01;34mend[m [01;34mselect[m[31m;[m
      [01;34mend[m [01;34mloop[m[31m;[m
      [01;30mPut_Line[m[31m([m[31m"Message box halted"[m[31m);[m
   [01;34mend[m Message_Box[31m;[m
   
   [01;34mprotected[m [01;34mbody[m WOPR [01;34mis[m
      [01;34mentry[m [01;30mSet_Alert[m [31m([mAlert [31m:[m [01;34min[m T_EmergCon[31m)[m [01;34mwhen[m Message[31m.[mNation [31m=[m UN [01;34mis[m
      [01;34mbegin[m
	 [01;34mnull[m[31m;[m
      [01;34mend[m Set_Alert[31m;[m
      [01;34mentry[m [01;30mRaise_DefCon[m [31m([mDefCon [31m:[m [01;34min[m T_DefCon[31m)[m [01;34mwhen[m Message[31m.[mLANG [31m=[m EU [01;34mis[m
      [01;34mbegin[m
	 [01;34mnull[m[31m;[m
      [01;34mend[m Raise_DefCon[31m;[m
      
      [01;34mentry[m [01;30mGet_Message[m [31m([mLine [31m:[m [01;34min[m [32mWide_String[m[31m;[mMsg [31m:[m [01;34mout[m Message_Type[31m)[m [01;34mwhen[m Message[31m.[mNation [31m=[m UN [01;34mand[m Message[31m.[mLANG [31m=[m EU [01;34mis[m
      [01;34mbegin[m
	    [01;30mIs_Valid[m[31m([mMessage[31m,[m Line[31m);[m
	    [01;34mif[m Message[31m.[mNation [31m=[m UN [01;34mand[m Message[31m.[mLANG [31m=[m EU [01;34mthen[m
	       Msg [31m:=[m Message[31m;[m
	    [01;34melse[m
	       Status [31m:=[m T_LertCon'[01;30mSucc[m[31m([mStatus[31m);[m
	       Msg[31m.[mValid [31m:=[m False[31m;[m
	    [01;34mend[m [01;34mif[m[31m;[m
	 [01;34mend[m Get_Message[31m;[m
   [01;34mend[m WOPR[31m;[m
   
[01;34mend[m M[31m.[mWopr [31m;[m 
