|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 17408 (0x4400) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Class_Pen, seg_038193
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦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;
nblk1=10 nid=6 hdr6=1a [0x00] rec0=22 rec1=00 rec2=01 rec3=034 [0x01] rec0=1b rec1=00 rec2=08 rec3=030 [0x02] rec0=17 rec1=00 rec2=0d rec3=040 [0x03] rec0=23 rec1=00 rec2=09 rec3=050 [0x04] rec0=15 rec1=00 rec2=04 rec3=042 [0x05] rec0=13 rec1=00 rec2=03 rec3=026 [0x06] rec0=13 rec1=00 rec2=0f rec3=02a [0x07] rec0=11 rec1=00 rec2=0b rec3=03e [0x08] rec0=17 rec1=00 rec2=07 rec3=008 [0x09] rec0=18 rec1=00 rec2=0e rec3=06a [0x0a] rec0=1e rec1=00 rec2=0a rec3=036 [0x0b] rec0=15 rec1=00 rec2=02 rec3=03c [0x0c] rec0=12 rec1=00 rec2=10 rec3=000 [0x0d] rec0=12 rec1=00 rec2=10 rec3=000 [0x0e] rec0=04 rec1=00 rec2=0d rec3=001 [0x0f] rec0=00 rec1=00 rec2=00 rec3=000 tail 0x21735ba7a84e67cc0152b 0x42a00088462060003 Free Block Chain: 0x6: 0000 00 0c 03 fa 80 1b 61 69 6c 6c 65 20 3a 3d 20 45 ┆ aille := E┆ 0xc: 0000 00 05 00 2b 80 28 20 20 20 20 20 20 20 20 20 20 ┆ + ( ┆ 0x5: 0000 00 00 00 55 80 3f 20 20 20 20 20 20 20 20 20 20 ┆ U ? ┆