|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T V
Length: 2162 (0x872)
Types: TextFile
Names: »V«
└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
└─⟦77aa8350c⟧ »DATA«
└─⟦f794ecd1d⟧
└─⟦this⟧
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;