|
|
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: 10239 (0x27ff)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
with Class_String;
with Class_Printer;
with Class_Integer;
with Block;
with Bounded_String;
with String_Utilities;
with Bug_Report;
package body Class_Window is
function Send (This_Message : Message.Keyword; To : Object.Reference)
return Object.Reference is
type E_Message is (Tonnom, Tonx, Tony, Talargeur, Tahauteur);
Token : E_Message;
package Bs renames Bounded_String;
package Su renames String_Utilities;
Mess : Message.Keyword := This_Message;
use Object;
begin
Message.Init (This => Mess);
while not Message.Is_Done_Name (Mess) loop
Token := E_Message'Value (Bs.Image
(Message.Get (Name_From => Mess)));
case Token is
when Tonnom =>
if Object.Get (Class_From =>
Message.Get (Argument_From => Mess)) =
Object.String_Class then
Easy_Y.Put_Title
(Table (Object.Get (Index_From => To)),
Class_String.Get
(Object.Get
(Index_From =>
Message.Get (Argument_From => Mess))));
else
raise Bug_Report.Window_Bad_Type;
end if;
when Tonx =>
if Object.Get (Class_From =>
Message.Get (Argument_From => Mess)) =
Object.Integer_Class then
Easy_Y.Put_Left
(Table (Object.Get (Index_From => To)),
Object.Get (Index_From =>
Message.Get
(Argument_From => Mess)));
else
raise Bug_Report.Window_Bad_Type;
end if;
when Tony =>
if Object.Get (Class_From =>
Message.Get (Argument_From => Mess)) =
Object.Integer_Class then
Easy_Y.Put_Right
(Table (Object.Get (Index_From => To)),
Object.Get (Index_From =>
Message.Get
(Argument_From => Mess)));
else
raise Bug_Report.Window_Bad_Type;
end if;
when Talargeur =>
if Object.Get (Class_From =>
Message.Get (Argument_From => Mess)) =
Object.Integer_Class then
Easy_Y.Put_Width
(Table (Object.Get (Index_From => To)),
Object.Get (Index_From =>
Message.Get
(Argument_From => Mess)));
else
raise Bug_Report.Window_Bad_Type;
end if;
when Tahauteur =>
if Object.Get (Class_From =>
Message.Get (Argument_From => Mess)) =
Object.Integer_Class then
Easy_Y.Put_Height
(Table (Object.Get (Index_From => To)),
Object.Get (Index_From =>
Message.Get
(Argument_From => Mess)));
else
raise Bug_Report.Window_Bad_Type;
end if;
end case;
Message.Next (Mess);
end loop;
return To;
exception
when Constraint_Error =>
raise Bug_Report.Unknown_Keyword_Message;
end Send;
function Send (This_Message : Message.Binary; To : Object.Reference)
return Object.Reference is
begin
raise Bug_Report.Unknown_Binary_Message;
return Object.Void_Reference;
end Send;
function Send (This_Message : Message.Unary; To : Object.Reference)
return Object.Reference is
type E_Message is (Dupliquetoi, Tonnom, Tonx, Tony, Talargeur,
Tahauteur, Affichetoi, Cachetoi, Entexte);
Token : E_Message;
package Bs renames Bounded_String;
begin
Token := E_Message'Value (Bs.Image
(Message.Get (Name_From => This_Message)));
case Token is
when Dupliquetoi =>
return Create (From => Table (Object.Get (Index_From => To)));
when Tonnom =>
return Class_String.Create
(Easy_Y.Get_Title
(Table (Object.Get (Index_From => To))));
when Tonx =>
return Class_Integer.Create
(Easy_Y.Get_Left
(Table (Object.Get (Index_From => To))));
when Tony =>
return Class_Integer.Create
(Easy_Y.Get_Right
(Table (Object.Get (Index_From => To))));
when Talargeur =>
return Class_Integer.Create
(Easy_Y.Get_Width
(Table (Object.Get (Index_From => To))));
when Tahauteur =>
return Class_Integer.Create
(Easy_Y.Get_Height
(Table (Object.Get (Index_From => To))));
when Affichetoi =>
Easy_Y.Open (Bounded_String.Image (Terminal_Name),
Table (Object.Get (Index_From => To)));
Easy_Y.Update;
return To;
when Cachetoi =>
Easy_Y.Close (Table (Object.Get (Index_From => To)));
return To;
when Entexte =>
Put (To);
return To;
end case;
exception
when Constraint_Error =>
raise Bug_Report.Unknown_Unary_Message;
end Send;
function Create (From : Easy_Y.Window_Type) return Object.Reference is
use Object;
begin
Last := Last + 1;
Easy_Y.Put_Title (Table (Last), Easy_Y.Get_Title (From));
Easy_Y.Put_Left (Table (Last), Easy_Y.Get_Left (From));
Easy_Y.Put_Right (Table (Last), Easy_Y.Get_Right (From));
Easy_Y.Put_Width (Table (Last), Easy_Y.Get_Width (From));
Easy_Y.Put_Height (Table (Last), Easy_Y.Get_Height (From));
return Object.Create (Class => Object.Window_Class, Object => Last);
exception
when Constraint_Error =>
raise Bug_Report.Full_Block_Table;
end Create;
procedure Create is
use Object;
Node : Block.Node := Block.Get_Current_Node;
begin
Last := Last + 1;
Block.Put_Into_Table
(This_Object => Object.Create
(Class => Object.Window_Class, Object => Last),
Named => Bounded_String.Value ("fenetre", 80),
Into_Block => Node);
Easy_Y.Put_Title (Table (1), Bounded_String.Value ("Tiny Talk", 80));
Easy_Y.Open (Bounded_String.Image (Terminal_Name), Table (1));
Easy_Y.Update;
end Create;
function Get (Index : Object.Index) return Easy_Y.Window_Type is
begin
return Table (Index);
end Get;
procedure Put (Window : Easy_Y.Window_Type; Index : Object.Index) is
begin
Table (Index) := Window;
end Put;
function Get_Terminal_Name return Object.Tiny_String is
begin
return Terminal_Name;
end Get_Terminal_Name;
procedure Put_Terminal_Name (What : Object.Tiny_String) is
begin
Bounded_String.Copy (Terminal_Name, What);
end Put_Terminal_Name;
procedure Put (An_Object : Object.Reference) is
begin
Class_Printer.Put ("Objet Fenetre {");
Class_Printer.Forward (4);
Class_Printer.New_Line;
Class_Printer.Put ("Numero => " &
Object.Index'Image (Object.Get
(Index_From => An_Object)));
Class_Printer.New_Line;
Class_Printer.Put
("Title => " & '"' &
Bounded_String.Image
(Easy_Y.Get_Title (Table (Object.Get (An_Object)))) & '"');
Class_Printer.New_Line;
Class_Printer.Put ("X => " &
Object.Index'Image
(Easy_Y.Get_Left (Table
(Object.Get (An_Object)))));
Class_Printer.New_Line;
Class_Printer.Put ("Y => " &
Object.Index'Image
(Easy_Y.Get_Right (Table
(Object.Get (An_Object)))));
Class_Printer.New_Line;
Class_Printer.Put ("Largeur => " &
Object.Index'Image
(Easy_Y.Get_Width (Table
(Object.Get (An_Object)))));
Class_Printer.New_Line;
Class_Printer.Put ("Hauteur => " &
Object.Index'Image
(Easy_Y.Get_Height
(Table (Object.Get (An_Object)))));
-- Class_Printer.New_Line;
-- Class_Printer.Put ("Block => ");
-- Class_Printer.Forward (4);
-- Class_Printer.New_Line;
-- Class_Block.Put
-- (Object.Create
-- (Class => Object.Block_Class,
-- Object => Table (Object.Get (Index_From => An_Object)).Block));
-- Class_Printer.Backward (8);
Class_Printer.New_Line;
Class_Printer.Backward (4);
Class_Printer.Put_Tab ("}");
Class_Printer.New_Line (2);
end Put;
end Class_Window;