|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 4702 (0x125e)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
with Bounded_String;
with Custom;
with Easy_X;
with Integer_Class;
with Message;
with Object;
with Parameters;
with Pen_Class;
with Scanner;
with String_Class;
package body Errors is
A_Pen : Object.Reference := Pen_Class.Get_For_Error;
Opened_Window : Boolean := False;
procedure Write_With_Pen (The_Pen : Object.Reference;
The_String : String;
X, Y : Integer) is
Msg : Message.Selector;
Arg : Parameters.List;
Obj : Object.Reference;
Ton_X : Scanner.Lexeme := Bounded_String.Value
("TON_X:", Custom.String_Max_Length);
Ton_Y : Scanner.Lexeme := Bounded_String.Value
("TON_Y:", Custom.String_Max_Length);
Fin : Scanner.Lexeme := Bounded_String.Value
("FIN", Custom.String_Max_Length);
Ecris : Scanner.Lexeme := Bounded_String.Value
("ECRIS:", Custom.String_Max_Length);
begin
Message.Free (Msg);
Parameters.Free (Arg);
Obj := Integer_Class.Create (X);
Message.Insert (Ton_Y, Msg);
Parameters.Insert (Obj, Arg);
Obj := Integer_Class.Create (Y);
Message.Insert (Ton_X, Msg);
Parameters.Insert (Obj, Arg);
Pen_Class.Send (The_Pen, Msg, Arg, Obj);
Obj := Pen_Class.Send (The_Pen, Fin);
Message.Free (Msg);
Parameters.Free (Arg);
Obj := String_Class.Get_For_Error (The_String);
Message.Insert (Ecris, Msg);
Parameters.Insert (Obj, Arg);
Pen_Class.Send (The_Pen, Msg, Arg, Obj);
end Write_With_Pen;
procedure Parse_Log (The_Error : String;
Terminal : String;
With_Line_Nb : Boolean := True) is
Line_Number : Natural;
begin
Easy_X.Open (Terminal, " Y'A UN PROBLEME... ", 100, 300, 800, 50);
loop
case Easy_X.Next_Event is
when Easy_X.Update =>
if With_Line_Nb then
Line_Number := Scanner.Get_Line_Number;
Write_With_Pen
(A_Pen, "En analysant la ligne numero " &
Natural'Image (Line_Number) & " :",
20, 20);
Write_With_Pen (A_Pen, The_Error, 40, 30);
else
Write_With_Pen (A_Pen, The_Error, 20, 20);
end if;
when Easy_X.Button_Down =>
exit;
when Easy_X.Button_Up =>
null;
end case;
end loop;
Opened_Window := True;
raise Stop_Parsing;
end Parse_Log;
procedure Save_Interpret_Line (Line_Number : Natural) is
begin
Interpreting_Line := Line_Number;
if not Opened_Window then
Opened_Window := True;
end if;
end Save_Interpret_Line;
procedure Interpret_Log (The_Error : String;
Terminal : String;
With_Line_Nb : Boolean := True) is
begin
Easy_X.Close;
Easy_X.Open (Terminal, " Y'A UN PROBLEME... ", 100, 300, 800, 50);
loop
case Easy_X.Next_Event is
when Easy_X.Update =>
if With_Line_Nb then
Write_With_Pen
(A_Pen, "En interpretant la ligne numero" &
Natural'Image (Interpreting_Line) & " :",
20, 20);
Write_With_Pen (A_Pen, The_Error, 40, 30);
else
Write_With_Pen (A_Pen, The_Error, 20, 20);
end if;
when Easy_X.Button_Down =>
exit;
when Easy_X.Button_Up =>
null;
end case;
end loop;
raise Stop_Interpreting;
end Interpret_Log;
procedure Run_Log (The_Error : String; Terminal : String) is
begin
if Opened_Window then
Easy_X.Close;
end if;
Easy_X.Open (Terminal, " A BIENTOT ... ", 200, 400, 700, 40);
loop
case Easy_X.Next_Event is
when Easy_X.Update =>
Write_With_Pen (A_Pen, The_Error, 30, 30);
when Easy_X.Button_Down =>
exit;
when Easy_X.Button_Up =>
null;
end case;
end loop;
Easy_X.Close;
end Run_Log;
end Errors;