|
|
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: 11818 (0x2e2a)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
with Bounded_String;
with Class_Integer;
with Class_String;
with Class_Printer;
with Class_Window;
with Block;
with Message;
with String_Utilities;
with Text_Io;
with Bug_Report;
package body Class_Pen is
function Send (This_Message : Message.Unary; To : Object.Reference)
return Object.Reference is
type E_Message is (Petitetaille, Moyennetaille, Grandetaille,
Tafenetre, Rentrecheztoi, Tonx, Tony,
Tataille, Dupliquetoi, Detruistoi, Entexte);
Token : E_Message;
package Bs renames Bounded_String;
use Object;
begin
Token := E_Message'Value (Bs.Image
(Message.Get (Name_From => This_Message)));
case Token is
when Petitetaille =>
Table (Object.Get (Index_From => To)).Taille :=
Easy_Y.Small_Font;
return To;
when Moyennetaille =>
Table (Object.Get (Index_From => To)).Taille :=
Easy_Y.Medium_Font;
return To;
when Grandetaille =>
Table (Object.Get (Index_From => To)).Taille :=
Easy_Y.Large_Font;
return To;
when Tataille =>
return Class_String.Create
(E_Message'Image
(E_Message'Val
((Easy_Y.Fonts'Pos
(Table (Object.Get (To)).Taille)))));
when Tafenetre =>
return Object.Create
(Object.Window_Class,
Table (Object.Get (Index_From => To)).Fenetre);
when Rentrecheztoi =>
Table (Object.Get (To)).X := 0;
Table (Object.Get (To)).Y := 0;
Table (Object.Get (To)).Taille := Easy_Y.Small_Font;
return To;
when Tonx =>
return Class_Integer.Create (Object.Index
(Table (Object.Get (To)).X));
when Tony =>
return Class_Integer.Create (Object.Index
(Table (Object.Get (To)).Y));
when Dupliquetoi =>
return Create (To);
when Detruistoi =>
return Object.Void_Reference;
when Entexte =>
Put (To);
return To;
end case;
exception
when Constraint_Error =>
raise Bug_Report.Unknown_Unary_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.Keyword; To : Object.Reference)
return Object.Reference is
type E_Message is (Tonx, Tony, Tafenetre, Vaenx, Y, Ecris);
Token : E_Message;
package Bs renames Bounded_String;
use Object;
Mess : Message.Keyword := This_Message;
begin
Message.Init (This => Mess);
while not Message.Is_Done_Name (Mess) loop
Token := E_Message'Value (Bs.Image (Message.Get (Mess)));
case Token is
when Tafenetre =>
if Object.Get (Class_From =>
Message.Get (Argument_From => Mess)) =
Object.Window_Class then
Table (Object.Get (Index_From => To)).Fenetre :=
Object.Get (Index_From =>
Message.Get (Argument_From => Mess));
else
raise Bug_Report.Pen_Bad_Type;
end if;
when Tonx =>
if Object.Get (Class_From =>
Message.Get (Argument_From => Mess)) =
Object.Integer_Class then
Table (Object.Get (Index_From => To)).X :=
Object.Get (Index_From =>
Message.Get (Argument_From => Mess));
else
raise Bug_Report.Pen_Bad_Type;
end if;
when Tony =>
if Object.Get (Class_From =>
Message.Get (Argument_From => Mess)) =
Object.Integer_Class then
Table (Object.Get (Index_From => To)).Y :=
Object.Get (Index_From =>
Message.Get (Argument_From => Mess));
else
raise Bug_Report.Pen_Bad_Type;
end if;
when Vaenx =>
if Object.Get (Class_From =>
Message.Get (Argument_From => Mess)) =
Object.Integer_Class then
Table (Object.Get (Index_From => To)).X :=
Object.Get (Index_From =>
Message.Get (Argument_From => Mess));
Message.Next (Mess);
if not Message.Is_Done (Mess) then
if Bs.Image (Message.Get (Name_From => Mess)) =
"Y" then
if Object.Get
(Class_From =>
Message.Get (Argument_From => Mess)) =
Object.Integer_Class then
Table (Object.Get (Index_From => To)).Y :=
Object.Get
(Index_From =>
Message.Get
(Argument_From => Mess));
else
raise Bug_Report.Pen_Bad_Type;
end if;
end if;
else
raise Bug_Report.Pen_Bad_Type;
end if;
end if;
when Y =>
if Object.Get (Class_From =>
Message.Get (Argument_From => Mess)) =
Object.Integer_Class then
Table (Object.Get (Index_From => To)).Y :=
Object.Get (Index_From =>
Message.Get (Argument_From => Mess));
Message.Next (Mess);
if not Message.Is_Done (Mess) then
if Bs.Image (Message.Get (Name_From => Mess)) =
"VaEnX" then
if Object.Get
(Class_From =>
Message.Get (Argument_From => Mess)) =
Object.Integer_Class then
Table (Object.Get (Index_From => To)).X :=
Object.Get
(Index_From =>
Message.Get
(Argument_From => Mess));
else
raise Bug_Report.Pen_Bad_Type;
end if;
end if;
else
raise Bug_Report.Pen_Bad_Type;
end if;
end if;
when Ecris =>
if Object.Get (Class_From =>
Message.Get (Argument_From => Mess)) =
Object.String_Class then
Easy_Y.Set_Display
(Class_Window.Get
(Index => Table (Object.Get (Index_From => To)).
Fenetre));
Easy_Y.Put_Font
(To => Table (Object.Get (Index_From => To)).Taille);
Easy_Y.Print
(X1 => Table (Object.Get (Index_From => To)).X,
Y1 => Table (Object.Get (Index_From => To)).Y,
The_String =>
Class_String.Get
(Object.Get (Index_From =>
Message.Get
(Argument_From => Mess))));
else
raise Bug_Report.Pen_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 Create (From : Object.Reference) return Object.Reference is
use Object;
begin
Last := Last + 1;
Table (Last) := Table (Object.Get (From));
return Object.Create (Class => Object.Pen_Class, Object => Last);
exception
when Constraint_Error =>
raise Bug_Report.Full_Pen_Table;
end Create;
procedure Create is
use Object;
Node : Block.Node := Block.Get_Current_Node;
Str : Object.Tiny_String;
begin
Last := Last + 1;
Block.Put_Into_Table
(This_Object => Object.Create
(Class => Object.Pen_Class, Object => Last),
Named => Bounded_String.Value ("stylo", 80),
Into_Block => Node);
exception
when Constraint_Error =>
raise Bug_Report.Full_Pen_Table;
end Create;
procedure Put (An_Object : Object.Reference) is
begin
Class_Printer.Put ("Objet Stylo {");
Class_Printer.Forward (4);
Class_Printer.New_Line;
Class_Printer.Put ("Numero => " &
Object.Index'Image (Object.Get (An_Object)));
Class_Printer.New_Line;
Class_Printer.Put ("X => " & Object.Index'Image
(Table (Object.Get (An_Object)).X));
Class_Printer.New_Line;
Class_Printer.Put ("Y => " & Object.Index'Image
(Table (Object.Get (An_Object)).Y));
Class_Printer.New_Line;
Class_Printer.Put ("Taille Police => ");
case Table (Object.Get (An_Object)).Taille is
when Easy_Y.Small_Font =>
Class_Printer.Put ("Petite Taille");
when Easy_Y.Medium_Font =>
Class_Printer.Put ("Moyenne Taille");
when Easy_Y.Large_Font =>
Class_Printer.Put ("Grande Taille");
end case;
Class_Printer.New_Line;
Class_Printer.Put ("Fenetre => ");
Class_Printer.New_Line;
Class_Printer.Forward (4);
Class_Window.Put (Object.Create
(Object.Window_Class,
Table (Object.Get (An_Object)).Fenetre));
Class_Printer.Backward (8);
Class_Printer.Put_Tab ("}");
Class_Printer.New_Line (2);
end Put;
function How_Many return Object.Index is
begin
return Last;
end How_Many;
end Class_Pen;