|
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: 16384 (0x4000) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Class_Pen_Y, seg_034b97
└─⟦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 Message; with String_Utilities; with Text_Io; package body Class_Pen_Y is function Send (This_Message : Message.Unary; To : Object.Reference) return Object.Reference is type E_Message is (Rentre_Chez_Toi, Ligne_Suivante, Ton_X, Ton_Y, Ta_Fonte, Duplique, Detruit, En_Texte); Token : E_Message; package Bs renames Bounded_String; An_Object : Object.Reference; begin Token := E_Message'Value (Bs.Image (Message.Get (Name_From => This_Message))); case Token is when Rentre_Chez_Toi => Table (Object.Get (To)).X := 0; Table (Object.Get (To)).Y := 0; return To; when Ligne_Suivante => Table (Object.Get (To)).X := 0; Table (Object.Get (To)).Y := Table (Object.Get (To)).Y + 16 * Easy_Y.Fonts'Pos (Table (Object.Get (To)).Taille); return Class_Integer.Create (Object.Index (Table (Object.Get (To)).Y)); when Ton_X => return Class_Integer.Create (Object.Index (Table (Object.Get (To)).X)); when Ton_Y => return Class_Integer.Create (Object.Index (Table (Object.Get (To)).Y)); when Ta_Fonte => return Class_String.Create (Easy_Y.Fonts'Image (Table (Object.Get (To)).Taille)); when Duplique => An_Object := Class_Pen_Y.Create; Table (Object.Get (An_Object)).X := Table (Object.Get (To)).X; Table (Object.Get (An_Object)).Y := Table (Object.Get (To)).Y; return An_Object; when Detruit => return Object.Void_Reference; when En_Texte => Text_Io.Put ("Objet Pen ("); Text_Io.New_Line; Text_Io.Put (" Classe =>"); Text_Io.Put (Object.E_Class'Image (Object.Get (To))); Text_Io.New_Line; Text_Io.Put (" Objet =>"); Text_Io.Put (Object.Index'Image (Object.Get (To))); Text_Io.New_Line; Text_Io.Put (" X =>"); Text_Io.Put (Integer'Image (Table (Object.Get (To)).X)); Text_Io.New_Line; Text_Io.Put (" Y =>"); Text_Io.Put (Integer'Image (Table (Object.Get (To)).Y)); Text_Io.New_Line; Text_Io.Put (" Fonte =>"); Text_Io.Put (Easy_Y.Fonts'Image (Table (Object.Get (To)).Taille)); Text_Io.New_Line; Text_Io.Put (" )"); Text_Io.New_Line (2); return Object.Void_Reference; end case; exception when Constraint_Error => return Object.Void_Reference; end Send; function Send (This_Message : Message.Binary; To : Object.Reference) return Object.Reference is type E_Message is (Avance, Ecrit, Fonte); An_Object : Object.Reference; A_Tiny_String : Object.Tiny_String; The_Message : Message.Binary := This_Message; Token : E_Message; package Bs renames Bounded_String; use Object; Pas : Object.Index; begin Token := E_Message'Value (Bs.Image (Message.Get (Name_From => The_Message))); case Token is when Avance => An_Object := Message.Get (The_Message); A_Tiny_String := Message.Get (The_Message); if Object.Get (An_Object) = E_Class (Integer_Class) then Pas := Object.Get (An_Object); Table (Object.Get (To)).X := Table (Object.Get (To)).X + Integer (Pas); else null; end if; return To; when Ecrit => An_Object := Message.Get (The_Message); A_Tiny_String := Class_String.Get (Object.Get (An_Object)); if Object.Get (An_Object) = Object.E_Class (String_Class) then Easy_Y.Move_To (X => Easy_Y.Coordinate (Table (Object.Get (To)).X), Y => Easy_Y.Coordinate (Table (Object.Get (To)).Y)); Easy_Y.Set_Font (To => Table (Object.Get (To)).Taille); Easy_Y.Draw_String (The_String => Bs.Image (A_Tiny_String)); else null; end if; return Object.Void_Reference; when Fonte => An_Object := Message.Get (The_Message); A_Tiny_String := Message.Get (The_Message); if Object.Get (An_Object) = E_Class (Integer_Class) then Table (Object.Get (To)).Taille := Easy_Y.Fonts'Val (Object.Get (An_Object)); else null; end if; return To; end case; exception when Constraint_Error => return Object.Void_Reference; end Send; function Send (This_Message : Message.Keyword; To : Object.Reference) return Object.Reference is type E_Message is (Va_En_X, Y); An_Object : Object.Reference; A_Tiny_String : Object.Tiny_String; The_Message : Message.Keyword := This_Message; Token : E_Message; package Bs renames Bounded_String; use Object; Pas : Object.Index; begin Token := E_Message'Value (Bs.Image (Message.Get (The_Message))); case Token is when Va_En_X => An_Object := Message.Get (The_Message); A_Tiny_String := Message.Get (The_Message); if Object.Get (An_Object) = E_Class (Integer_Class) then Pas := Object.Get (An_Object); Table (Object.Get (To)).X := Integer (Pas); Message.Next (The_Message); if not Message.Is_Done (The_Message) then An_Object := Message.Get (The_Message); A_Tiny_String := Message.Get (The_Message); if Bs.Image (A_Tiny_String) = "Y" then if Object.Get (An_Object) = E_Class (Integer_Class) then Pas := Object.Get (An_Object); Table (Object.Get (To)).Y := Integer (Pas); else null; end if; end if; else null; end if; end if; return To; when Y => An_Object := Message.Get (The_Message); A_Tiny_String := Message.Get (The_Message); if Object.Get (An_Object) = E_Class (Integer_Class) then Pas := Object.Get (An_Object); Table (Object.Get (To)).X := Integer (Pas); Message.Next (The_Message); if not Message.Is_Done (The_Message) then An_Object := Message.Get (Argument_From => The_Message); A_Tiny_String := Message.Get (Name_From => The_Message); if Bs.Image (A_Tiny_String) = "Va_En_X" then if Object.Get (An_Object) = E_Class (Integer_Class) then Pas := Object.Get (An_Object); Table (Object.Get (To)).Y := Integer (Pas); else null; end if; end if; else null; end if; end if; return To; end case; exception when Constraint_Error => return Object.Void_Reference; end Send; function Create return Object.Reference is use Object; begin Last := Last + 1; return Object.Create (Class => Object.Pen_Class, Object => Last); end Create; function Image (An_Object : Object.Reference) return Object.Tiny_String is use Object; Chaine : Object.Tiny_String; Valeur : Object.Index; begin Valeur := Object.Get (An_Object); Bounded_String.Copy (Chaine, String_Utilities.Number_To_String (Integer (Valeur))); return Chaine; end Image; function Value (Chaine : Object.Tiny_String) return Object.Reference is An_Object : Object.Reference; Bool : Boolean; Entier : Integer; begin String_Utilities.String_To_Number (Source => Bounded_String.Image (V => Chaine), Target => Entier, Worked => Bool); Object.Put (Object.Integer_Class, An_Object); Object.Put (Object.Index (Entier), An_Object); return An_Object; end Value; function How_Many return Object.Index is begin return Last; end How_Many; end Class_Pen_Y;
nblk1=f nid=9 hdr6=1a [0x00] rec0=1f rec1=00 rec2=01 rec3=058 [0x01] rec0=15 rec1=00 rec2=0d rec3=098 [0x02] rec0=1c rec1=00 rec2=08 rec3=040 [0x03] rec0=23 rec1=00 rec2=07 rec3=02e [0x04] rec0=15 rec1=00 rec2=05 rec3=050 [0x05] rec0=1f rec1=00 rec2=0e rec3=002 [0x06] rec0=1d rec1=00 rec2=02 rec3=022 [0x07] rec0=00 rec1=00 rec2=0f rec3=002 [0x08] rec0=18 rec1=00 rec2=0b rec3=026 [0x09] rec0=1c rec1=00 rec2=04 rec3=040 [0x0a] rec0=01 rec1=00 rec2=0a rec3=01e [0x0b] rec0=1d rec1=00 rec2=06 rec3=060 [0x0c] rec0=0c rec1=00 rec2=03 rec3=000 [0x0d] rec0=0f rec1=00 rec2=0f rec3=000 [0x0e] rec0=22 rec1=00 rec2=03 rec3=001 tail 0x21731148484d6975ddf2e 0x42a00088462060003 Free Block Chain: 0x9: 0000 00 0c 01 7c 80 18 20 20 20 20 20 20 20 20 20 20 ┆ | ┆ 0xc: 0000 00 00 00 17 80 14 20 20 20 20 20 20 20 20 20 20 ┆ ┆