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

⟦531c863c7⟧ Ada Source

    Length: 6144 (0x1800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Line_Buffer_Unbounded_Width, seg_0046dd

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



--| @SUMMARY This package provides operations for creating, processing,
--| filtering, sorting, justifying, and displaying buffers of text. The
--| length of each buffer is defined at the point of declaration.  The
--| width of any text line is unbounded.
--|
with Unbounded_String;
package Line_Buffer_Unbounded_Width is

    type Buffer (Length : Positive) is private;

    subtype Line is String;

    procedure Reset (The_Buffer : in out Buffer);

    procedure Append (The_Buffer :        Buffer;  
                      To         : in out Buffer);

    procedure Append_Line (The_Line :        Line;  
                           To       : in out Buffer);

    procedure Prepend_Line (The_Line :        Line;  
                            To       : in out Buffer);

    procedure Overwrite (The_Line    :        Line;
                         At_Location :        Positive;
                         To          : in out Buffer);

    procedure Remove (Line_At_Location :        Positive;  
                      In_Buffer        : in out Buffer);

    function Buffer_Length (Of_Buffer : Buffer) return Natural;

    function String_Image (Of_Buffer : Buffer; Add_Line_Feeds : Boolean := True)
                          return String;

    Overflow : exception;

    procedure Append  (Text : String; To_All_Lines_In_Buffer : in out Buffer);
    procedure Prepend (Text : String; To_All_Lines_In_Buffer : in out Buffer);

    procedure Strip (The_Buffer : in out Buffer; Char : Character := ' ');
    procedure Strip_Leading (The_Buffer : in out Buffer;
                             Char       :        Character := ' ');
    procedure Strip_Trailing (The_Buffer : in out Buffer;
                              Char       :        Character := ' ');

    generic
        with function Discard (The_Line : Line) return Boolean;
    procedure Filter (The_Buffer : in out Buffer);

    generic
        with function "<" (Left Right : Line) return Boolean;
    procedure Sort (The_Buffer : in out Buffer);

    generic
        with function Break_Point (In_Line : Line) return Positive;
    procedure Left_Right_Justify (The_Buffer : in out Buffer);

    generic
        with function Process (The_Line : Line) return Line;
    procedure Modify (The_Buffer : in out Buffer);

    generic
        with procedure Put_Line (The_Line : Line);
    procedure Display (The_Buffer : Buffer);

    type Iterator is private;

    procedure Init  (Iter : in out Iterator; From_Buffer : Buffer);
    function  Done  (Iter : Iterator) return Boolean;
    function  Value (Iter : Iterator) return Line;
    procedure Next  (Iter : in out Iterator);
private

    package Unbounded is new Unbounded_String (80);

    subtype Var_String is Unbounded.Variable_String;

    type Buffer_Lines is array (Positive range <>) of Var_String;

    type Buffer (Length : Positive) is
        record
            Buf     : Buffer_Lines (1 .. Length);
            Current : Positive := 1;
            Size    : Natural  := 0;
        end record;

    type Iterator is access Buffer;
end Line_Buffer_Unbounded_Width;

E3 Meta Data

    nblk1=5
    nid=0
    hdr6=a
        [0x00] rec0=1d rec1=00 rec2=01 rec3=02c
        [0x01] rec0=18 rec1=00 rec2=02 rec3=03e
        [0x02] rec0=00 rec1=00 rec2=05 rec3=002
        [0x03] rec0=1f rec1=00 rec2=03 rec3=012
        [0x04] rec0=07 rec1=00 rec2=04 rec3=000
    tail 0x215004c64815c6737fa4d 0x42a00088462061e03