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

⟦ae3492b13⟧ TextFile

    Length: 1523 (0x5f3)
    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

package body Lines is
    function Make return Lines_Type is
    begin
        return null;
    end Make;

    function Is_Empty (Lines : Lines_Type) return Boolean is
    begin
        return Lines = null;
    end Is_Empty;

    procedure Add (New_Line : Line; To : in out Lines_Type) is
    begin
        To := new Line_Rec'(Ubs.Value (New_Line), To);
    end Add;

    function Initialize (Lines : Lines_Type) return Line_Iterator is
        function Transpose (The_Fields : Lines_Type) return Lines_Type is
            Reverse_Fields : Lines_Type := Make;
            Field_Iterator : Lines_Type := The_Fields;
        begin
            while not (Field_Iterator = null) loop
                Add (Value (Line_Iterator (Field_Iterator)), Reverse_Fields);
                Field_Iterator := Field_Iterator.all.Next;
            end loop;

            return Reverse_Fields;
        end Transpose;
    begin
        if Lines /= null then
            return Line_Iterator (Transpose (Lines));
        else
            return null;
        end if;
    end Initialize;

    function Value (Iterator : Line_Iterator) return Line is
    begin
        return Ubs.Image (Iterator.A_Line);
    exception
        when others =>
            return "";
    end Value;

    procedure Next (Iterator : in out Line_Iterator) is
    begin
        Iterator := Line_Iterator (Iterator.all.Next);
    end Next;

    function Done (Iterator : Line_Iterator) return Boolean is
    begin
        return Iterator = null;
    end Done;
end Lines;