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 - download
Index: ┃ T V

⟦2275528d5⟧ TextFile

    Length: 2162 (0x872)
    Types: TextFile
    Names: »V«

Derivation

└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
    └─ ⟦77aa8350c⟧ »DATA« 
        └─⟦f794ecd1d⟧ 
            └─⟦this⟧ 

TextFile

generic
    type Element is private;
    with procedure Free_Element (X : in out Element);

    pragma Must_Be_Constrained (Yes => Element);

package Managed_Sequence_Generic is

    type Sequence is private;
    -- If used by multiple tasks, they must synchronize their access
    -- to Sequence objects themselves.

    -- May generate garbage
    -- = and := operate on references
    --

    -- constraint error is raised when nil i provided to any of
    --    first, rest, set_first, or set_rest

    function Nil return Sequence;

    procedure Append (S : in out Sequence; X : Element);

    function Is_Empty (S : Sequence) return Boolean;
    function Length   (S : Sequence) return Natural;
    type Iterator is private;

    procedure Init  (Iter : out Iterator; S : Sequence);
    procedure Next  (Iter : in out Iterator);
    function  Value (Iter : Iterator) return Element;
    function  Done  (Iter : Iterator) return Boolean;

    function First (S : Sequence) return Element;
    function Rest  (S : Sequence) return Sequence;

    procedure Free (S : in out Sequence);
    -- deallocates sequence and all elements of sequence (using generic formal
    -- Free_Element).
    -- Assumes no sharing.
    -- It's up to the user to avoid dangling references
    -- to S or any sequence used to construct S.

    --/inline    pragma inline(make);
    --/inline    pragma inline(nil);
    --/inline    pragma inline(is_empty);

    --/inline    pragma inline(first);
    --/inline    pragma inline(rest);
    --/inline    pragma inline(set_rest);
    --/inline    pragma inline(set_first);
private

    type Sequence_Data;
    type Sequence is access Sequence_Data;
    pragma Enable_Deallocation (Sequence);
    -- variables of type Sequence are initialized to null

    type Sequence_Data is
        record
            Value : Element;
            Rest  : Sequence;    -- next element of sequence
            Tail  : Sequence;    -- last element of
        end record;

    type Iterator is new Sequence;

    --/R1000 pragma Subsystem (Cross_Development);
    pragma Module_Name (4, 3878);
    pragma Bias_Key (28);

end Managed_Sequence_Generic;