DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦7317af31d⟧ Ada Source

    Length: 8192 (0x2000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Put, seg_0043ea, separate Ct_Hierarchy

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



with Graphics_Chars;
with Graphic_Lines;
with Window_Utilities;
separate (Ct_Hierarchy)
procedure Put (This_Map : Display_Map; In_This_Window : Window) is

    procedure Put (This_Object : Object; In_This_Window : Window) is
    begin
        Window_Io.Position_Cursor (File   => In_This_Window,
                                   Line   => This_Object.Line,
                                   Column => This_Object.Col,
                                   Offset => 0);  
        Window_Io.Overwrite (File  => In_This_Window,
                             Item  => Ub_Strings.Image (This_Object.Name),
                             Image => Window_Io.Normal,
                             Kind  => Window_Io.Text);
    end Put;


    procedure Put (This_Graphics_Char : Character;
                   On_This_Line       : Positive;
                   At_This_Col        : Positive;
                   In_This_Window     : Window) is
    begin
        Window_Io.Position_Cursor (File   => In_This_Window,
                                   Line   => On_This_Line,
                                   Column => At_This_Col,
                                   Offset => 0);  
        Window_Io.Overwrite (File  => In_This_Window,
                             Item  => This_Graphics_Char,
                             Image => Graphics_Chars.Graphics_Font,
                             Kind  => Window_Io.Text);
    end Put;


    procedure Put_In_Box (This_Object : Object; In_This_Window : Window) is
    begin
        Graphic_Lines.Draw_Box
           (First_Line    => This_Object.Line - 1,
            First_Col     => This_Object.Col - 1,
            Second_Line   => This_Object.Line + 1,
            Second_Col    => This_Object.Col +
                                Ub_Strings.Length (This_Object.Name),
            Output_Window => In_This_Window);
        Put (This_Object => This_Object, In_This_Window => In_This_Window);
    end Put_In_Box;


begin
    Window_Utilities.Erase (In_This_Window);
    Put_In_Box (This_Map.Element, In_This_Window);
    Put_In_Box (This_Map.Return_Option, In_This_Window);

    for I in 1 .. This_Map.Num_Parents loop
        Put (This_Object    => This_Map.Parents (I),
             In_This_Window => In_This_Window);
    end loop;

    if This_Map.Num_Parents > 0 then
        Put (This_Graphics_Char => Graphics_Chars.U_L_Corner,
             On_This_Line       => This_Map.Parents (1).Line - 1,
             At_This_Col        => This_Map.Parents (1).Col - 2,
             In_This_Window     => In_This_Window);
        Put (This_Graphics_Char => Graphics_Chars.L_L_Corner,
             On_This_Line => This_Map.Parents (This_Map.Num_Parents).Line + 1,
             At_This_Col => This_Map.Parents (1).Col - 2,
             In_This_Window => In_This_Window);
        Graphic_Lines.Draw_Vertical
           (From_Line     => This_Map.Parents (1).Line,
            To_Line       => This_Map.Parents (This_Map.Num_Parents).Line,
            In_Column     => This_Map.Parents (1).Col - 2,
            Output_Window => In_This_Window);
        Graphic_Lines.Connect_Horizontal
           (From_Col      => This_Map.Parents (1).Col - 2,
            To_Col        => This_Map.Parents (1).Col - 4,
            On_Line       => (This_Map.Parents (1).Line +
                              This_Map.Parents (This_Map.Num_Parents).Line) / 2,
            Output_Window => In_This_Window);
        Graphic_Lines.Connect_Vertical
           (From_Line     => (This_Map.Parents (1).Line +
                              This_Map.Parents (This_Map.Num_Parents).Line) / 2,
            To_Line       => This_Map.Element.Line - 1,
            In_Column     => This_Map.Parents (1).Col - 4,
            Output_Window => In_This_Window);
    else
        Put (This_Object    => (Ada_Program.Nil_Element,
                                Ub_Strings.Value ("(no callers)"), 2, 11),
             In_This_Window => In_This_Window);
    end if;


    for I in 1 .. This_Map.Num_Children loop
        Put (This_Object    => This_Map.Children (I),
             In_This_Window => In_This_Window);
    end loop;

    if This_Map.Num_Children > 0 then
        Put (This_Graphics_Char => Graphics_Chars.U_L_Corner,
             On_This_Line       => This_Map.Children (1).Line - 1,
             At_This_Col        => This_Map.Children (1).Col - 2,
             In_This_Window     => In_This_Window);
        Put (This_Graphics_Char => Graphics_Chars.L_L_Corner,
             On_This_Line => This_Map.Children (This_Map.Num_Children).Line + 1,
             At_This_Col => This_Map.Children (1).Col - 2,
             In_This_Window => In_This_Window);
        Graphic_Lines.Draw_Vertical
           (From_Line     => This_Map.Children (1).Line,
            To_Line       => This_Map.Children (This_Map.Num_Children).Line,
            In_Column     => This_Map.Children (1).Col - 2,
            Output_Window => In_This_Window);
        Graphic_Lines.Connect_Horizontal
           (From_Col => This_Map.Children (1).Col - 2,
            To_Col => This_Map.Children (1).Col - 4,
            On_Line => (This_Map.Children (1).Line +
                        This_Map.Children (This_Map.Num_Children).Line) / 2,
            Output_Window => In_This_Window);
        Graphic_Lines.Connect_Vertical
           (From_Line => (This_Map.Children (1).Line +
                          This_Map.Children (This_Map.Num_Children).Line) / 2,
            To_Line => This_Map.Element.Line + 1,
            In_Column => This_Map.Children (1).Col - 4,
            Output_Window => In_This_Window);

    else
        Put (This_Object    => (Ada_Program.Nil_Element,
                                Ub_Strings.Value ("(no calls)"),
                                This_Map.Element.Line + 4, 11),
             In_This_Window => In_This_Window);
    end if;



end Put;

E3 Meta Data

    nblk1=7
    nid=0
    hdr6=e
        [0x00] rec0=1a rec1=00 rec2=01 rec3=036
        [0x01] rec0=15 rec1=00 rec2=02 rec3=01e
        [0x02] rec0=18 rec1=00 rec2=03 rec3=02a
        [0x03] rec0=11 rec1=00 rec2=04 rec3=094
        [0x04] rec0=16 rec1=00 rec2=05 rec3=05c
        [0x05] rec0=17 rec1=00 rec2=06 rec3=000
        [0x06] rec0=02 rec1=00 rec2=07 rec3=000
    tail 0x21500318e815c634deb50 0x42a00088462061e03