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

⟦b28bae153⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, function Conversion, seg_0043e8, 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



separate (Ct_Hierarchy)
function Conversion (Of_This_Tree : Call_Tree_Queues.Queue)
                    return Hierarchy.Hier is

    package Queues renames Call_Tree_Queues.Queues;

    The_Queue : Queues.Queue := Of_This_Tree;
    The_Hierarchy : Hierarchy.Hier := Hierarchy.Create;
    The_Unit : Ada_Program.Element := Queues.First (Of_This_Tree).Subprogram_Id;


    procedure Add (The_Parent    :        Ada_Program.Element;
                   Parent_Level  :        Natural;
                   The_Queue     : in out Queues.Queue;
                   The_Hierarchy : in out Hierarchy.Hier) is
        Current_Level : Natural := Queues.First (The_Queue).Nested_Level;
        Prev_Element  : Ada_Program.Element;

    begin  
        while Current_Level > Parent_Level loop
            if Current_Level = Parent_Level + 1 then
                Hierarchy.Add (This_Parent       => The_Parent,
                               And_This_Child    =>
                                 Queues.First (The_Queue).Subprogram_Id,
                               To_This_Hierarchy => The_Hierarchy);
                Prev_Element := Queues.First (The_Queue).Subprogram_Id;
                Queues.Delete (The_Queue);
            elsif Current_Level = Parent_Level + 2 then
                Add (The_Parent    => Prev_Element,
                     Parent_Level  => Parent_Level + 1,
                     The_Queue     => The_Queue,
                     The_Hierarchy => The_Hierarchy);
            else
                raise Program_Error;
            end if;
            if Queues.Is_Empty (The_Queue) then
                return;
            end if;
            Current_Level := Queues.First (The_Queue).Nested_Level;
        end loop;
    end Add;



begin
    Queues.Delete (The_Queue);
    Add (The_Parent    => The_Unit,
         Parent_Level  => 0,
         The_Queue     => The_Queue,
         The_Hierarchy => The_Hierarchy);
    return The_Hierarchy;
end Conversion;

E3 Meta Data

    nblk1=4
    nid=0
    hdr6=8
        [0x00] rec0=19 rec1=00 rec2=01 rec3=028
        [0x01] rec0=00 rec1=00 rec2=04 rec3=002
        [0x02] rec0=1b rec1=00 rec2=02 rec3=016
        [0x03] rec0=02 rec1=00 rec2=03 rec3=001
    tail 0x21500317a815c634a5f9b 0x42a00088462061e03