DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: B T

⟦930e6c4c4⟧ TextFile

    Length: 1735 (0x6c7)
    Types: TextFile
    Names: »B«

Derivation

└─⟦180fe333a⟧ Bits:30000405 8mm tape, Rational 1000, SW CATALOG, 10_20_0
└─⟦180fe333a⟧ Bits:30000537 8mm tape, Rational 1000, SW Catalog 10_20_0
    └─⟦5cb1d1d7f⟧ »DATA« 
        └─⟦3b1ee7bd8⟧ 
            └─⟦this⟧ 

TextFile

separate (Analyze_Generic)
procedure Enumeration_Clause (For_Clause :        Representation_Clause;
                              Result     : in out Lines.Lines_Type) is

    function "=" (A, B : Ap.Element) return Boolean renames Ap."=";

    Reps_Type    : Ap.Element   := Reps.Associated_Type (For_Clause);
    Size_Element : Ap.Element;
    Agg          : Ap.Element;
    Agg_Iter     : Ap.Element_Iterator;
    Actual_Size  : Long_Integer;
    Reps_Size    : Long_Integer;  
    Tmp          : Long_Integer;
    Largest      : Long_Integer := 0;
    function Size_Of (Top : Long_Integer) return Long_Integer is
        type Dummy is new Integer range 0 .. Integer (Top);
    begin
        return Long_Integer (Dummy'Size);
    end Size_Of;

begin
    Size_Element := Reps.Associated_Size (Reps_Type);
    if Size_Element /= Ap.Nil_Element then
        Reps_Size := Ne.Static_Value (Size_Element);
        Agg       := Reps.Representation_Aggregate (For_Clause);
        Agg_Iter  := Ne.Components (Agg, True);
        while not Ap.Done (Agg_Iter) loop
            Tmp := Ne.Static_Value (Ne.Component_Expression
                                       (Ap.Value (Agg_Iter)));
            if Tmp > Largest then
                Largest := Tmp;
            end if;
            Ap.Next (Agg_Iter);
        end loop;

        Actual_Size := Size_Of (Largest);

        Lines.Add (Ap.Image (Ap.Parent (Size_Element)), Result);

        if Actual_Size /= Reps_Size then
            Lines.Add
               (Filler & "Size Mismatch; Type's size of " &
                Su.Number_To_String (Actual_Size) &
                " vs Rep's size of " & Su.Number_To_String (Reps_Size), Result);

        end if;
    end if;
end Enumeration_Clause;