package body ASN1_Iterators.Generic_Iterator is -- procedure Initialize (Self: in out Generic_Iterator_Type) is -- begin -- Self.Item.Initialize; -- Self.Item.Value := ASN1_Iterable.First(ASN1_Iterable.Iterable'Class(Self.Item)); -- end; function First (Item : Iterator) return Cursor is C: constant Cursor := Item.Ptr; begin C.Item.Value := ASN1_Iterable.First(ASN1_Iterable.Iterable'Class(Item.Ptr.all.Item)); return C; end; function Next (Item : Iterator; Ptr : Cursor) return Cursor is C: constant Cursor := Item.Ptr; begin C.Item.Value := ASN1_Iterable.Next(ASN1_Iterable.Iterable'Class(Ptr.all.Item)); return C; end; function Iterate (self : Generic_Iterator_Type) return Iterators.Forward_Iterator'Class is begin return I: Iterator do I.Ptr := self'Unrestricted_Access; end return; end; end;